/*
 * 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.
 */

#ifndef __MPH_H
#define __MPH_H

// Minimal perfect hash for each interface ID

#define MPH_NONE                      (-1)
#define MPH_MIN                         0

// OpenSL ES 1.0.1 interfaces
#define MPH_3DCOMMIT                    0
#define MPH_3DDOPPLER                   1
#define MPH_3DGROUPING                  2
#define MPH_3DLOCATION                  3
#define MPH_3DMACROSCOPIC               4
#define MPH_3DSOURCE                    5
#define MPH_AUDIODECODERCAPABILITIES    6
#define MPH_AUDIOENCODER                7
#define MPH_AUDIOENCODERCAPABILITIES    8
#define MPH_AUDIOIODEVICECAPABILITIES   9
#define MPH_BASSBOOST                  10
#define MPH_BUFFERQUEUE                11
#define MPH_DEVICEVOLUME               12
#define MPH_DYNAMICINTERFACEMANAGEMENT 13
#define MPH_DYNAMICSOURCE              14
#define MPH_EFFECTSEND                 15
#define MPH_ENGINE                     16
#define MPH_ENGINECAPABILITIES         17
#define MPH_ENVIRONMENTALREVERB        18
#define MPH_EQUALIZER                  19
#define MPH_LED                        20
#define MPH_METADATAEXTRACTION         21
#define MPH_METADATATRAVERSAL          22
#define MPH_MIDIMESSAGE                23
#define MPH_MIDIMUTESOLO               24
#define MPH_MIDITEMPO                  25
#define MPH_MIDITIME                   26
#define MPH_MUTESOLO                   27
#define MPH_NULL                       28  // shared by SL and XA
#define MPH_OBJECT                     29
#define MPH_OUTPUTMIX                  30
#define MPH_PITCH                      31
#define MPH_PLAY                       32
#define MPH_PLAYBACKRATE               33
#define MPH_PREFETCHSTATUS             34
#define MPH_PRESETREVERB               35
#define MPH_RATEPITCH                  36
#define MPH_RECORD                     37
#define MPH_SEEK                       38
#define MPH_THREADSYNC                 39
#define MPH_VIBRA                      40
#define MPH_VIRTUALIZER                41
#define MPH_VISUALIZATION              42
#define MPH_VOLUME                     43

// Wilhelm desktop extended interfaces
#define MPH_OUTPUTMIXEXT               44

// Android API level 9 extended interfaces
// GUID and MPH are shared by SL and XA, but currently documented for SL only
#define MPH_ANDROIDEFFECT              45
#define MPH_ANDROIDEFFECTCAPABILITIES  46
#define MPH_ANDROIDEFFECTSEND          47
#define MPH_ANDROIDCONFIGURATION       48
#define MPH_ANDROIDSIMPLEBUFFERQUEUE   49

// Android API level 12 extended interfaces
// GUID and MPH are shared by SL and XA, but currently documented for XA only
#define MPH_ANDROIDBUFFERQUEUESOURCE   50

// OpenMAX AL 1.0.1 interfaces
#define MPH_XAAUDIODECODERCAPABILITIES   51
#define MPH_XAAUDIOENCODER               52
#define MPH_XAAUDIOENCODERCAPABILITIES   53
#define MPH_XAAUDIOIODEVICECAPABILITIES  54
#define MPH_XACAMERA                     55
#define MPH_XACAMERACAPABILITIES         56
#define MPH_XACONFIGEXTENSION            57
#define MPH_XADEVICEVOLUME               58
#define MPH_XADYNAMICINTERFACEMANAGEMENT 59
#define MPH_XADYNAMICSOURCE              60
#define MPH_XAENGINE                     61
#define MPH_XAEQUALIZER                  62
#define MPH_XAIMAGECONTROLS              63
#define MPH_XAIMAGEDECODERCAPABILITIES   64
#define MPH_XAIMAGEEFFECTS               65
#define MPH_XAIMAGEENCODER               66
#define MPH_XAIMAGEENCODERCAPABILITIES   67
#define MPH_XALED                        68
#define MPH_XAMETADATAEXTRACTION         69
#define MPH_XAMETADATAINSERTION          70
#define MPH_XAMETADATATRAVERSAL          71
#define MPH_XANULL                 MPH_NULL
#define MPH_XAOBJECT                     72
#define MPH_XAOUTPUTMIX                  73
#define MPH_XAPLAY                       74
#define MPH_XAPLAYBACKRATE               75
#define MPH_XAPREFETCHSTATUS             76
#define MPH_XARADIO                      77
#define MPH_XARDS                        78
#define MPH_XARECORD                     79
#define MPH_XASEEK                       80
#define MPH_XASNAPSHOT                   81
#define MPH_XASTREAMINFORMATION          82
#define MPH_XATHREADSYNC                 83
#define MPH_XAVIBRA                      84
#define MPH_XAVIDEODECODERCAPABILITIES   85
#define MPH_XAVIDEOENCODER               86
#define MPH_XAVIDEOENCODERCAPABILITIES   87
#define MPH_XAVIDEOPOSTPROCESSING        88
#define MPH_XAVOLUME                     89

// Android API level 20 extended interfaces
#define MPH_ANDROIDACOUSTICECHOCANCELLATION 90
#define MPH_ANDROIDAUTOMATICGAINCONTROL     91
#define MPH_ANDROIDNOISESUPPRESSION         92

// total number of interface IDs
#define MPH_MAX                          93

#endif // !defined(__MPH_H)