EffectBundle.h revision 163fbcf84010b98e0374110454d85b804bc8d13b
12c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* 22c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Copyright (C) 2010 The Android Open Source Project 32c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * 42c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Licensed under the Apache License, Version 2.0 (the "License"); 52c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * you may not use this file except in compliance with the License. 62c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * You may obtain a copy of the License at 72c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * 82c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * http://www.apache.org/licenses/LICENSE-2.0 92c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * 102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Unless required by applicable law or agreed to in writing, software 112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * distributed under the License is distributed on an "AS IS" BASIS, 122c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * See the License for the specific language governing permissions and 142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * limitations under the License. 152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent */ 162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifndef ANDROID_EFFECTBUNDLE_H_ 182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define ANDROID_EFFECTBUNDLE_H_ 192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include <media/EffectApi.h> 212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include <LVM.h> 222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#if __cplusplus 242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentextern "C" { 252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif 262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define FIVEBAND_NUMBANDS 5 282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define MAX_NUM_BANDS 5 292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define MAX_CALL_SIZE 256 30163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent//#define LVM_PCM 312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent//TODO: this should be included from each effect API include 33163fbcf84010b98e0374110454d85b804bc8d13bEric Laurentstatic const effect_uuid_t SL_IID_BASSBOOST_ = { 0x0634f220, 0xddd4, 0x11db, 0xa0fc, 34163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent { 0x00, 0x02, 0xa5, 0xd5, 0xc5, 0x1b } }; 352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentconst effect_uuid_t * const SL_IID_BASSBOOST = &SL_IID_BASSBOOST_; 362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 37163fbcf84010b98e0374110454d85b804bc8d13bEric Laurentstatic const effect_uuid_t SL_IID_EQUALIZER_ = { 0x0bed4300, 0xddd6, 0x11db, 0x8f34, 38163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent { 0x00, 0x02, 0xa5, 0xd5, 0xc5, 0x1b } }; 392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentconst effect_uuid_t * const SL_IID_EQUALIZER = &SL_IID_EQUALIZER_; 402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 41163fbcf84010b98e0374110454d85b804bc8d13bEric Laurentstatic const effect_uuid_t SL_IID_VIRTUALIZER_ = { 0x37cc2c00, 0xdddd, 0x11db, 0x8577, 42163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent { 0x00, 0x02, 0xa5, 0xd5, 0xc5, 0x1b } }; 432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentconst effect_uuid_t * const SL_IID_VIRTUALIZER = &SL_IID_VIRTUALIZER_; 442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 45163fbcf84010b98e0374110454d85b804bc8d13bEric Laurentstatic const effect_uuid_t SL_IID_VOLUME_ = { 0x09e8ede0, 0xddde, 0x11db, 0xb4f6, 46163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent { 0x00, 0x02, 0xa5, 0xd5, 0xc5, 0x1b } }; 472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentconst effect_uuid_t * const SL_IID_VOLUME = &SL_IID_VOLUME_; 482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef enum 502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_BASS_BOOST, 522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_VIRTUALIZER, 53163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent LVM_EQUALIZER, 542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_VOLUME 552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} lvm_effect_en; 562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent// Preset configuration. 582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentstruct PresetConfig { 592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent // Human-readable name. 602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent const char * name; 612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent // An array of size nBands where each element is a configuration for the 622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent // corresponding band. 632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent //const BandConfig * bandConfigs; 642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent}; 652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* BundledEffectContext : One per session */ 672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentstruct BundledEffectContext{ 68163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent LVM_Handle_t hInstance; /* Instance handle */ 69163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent int SessionNo; /* Current session number */ 70163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent bool bVolumeEnabled; /* Flag for Volume */ 71163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent bool bEqualizerEnabled; /* Flag for EQ */ 72163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent bool bBassEnabled; /* Flag for Bass */ 73163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent bool bBassTempDisabled; /* Flag for Bass to be re-enabled */ 74163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent bool bVirtualizerEnabled; /* Flag for Virtualizer */ 75163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent bool bVirtualizerTempDisabled; /* Flag for effect to be re-enabled */ 76163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent int NumberEffectsEnabled; /* Effects in this session */ 77163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent int NumberEffectsCalled; /* Effects called so far */ 782c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent // Saved parameters for each effect */ 792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent // Bass Boost 80163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent int BassStrengthSaved; /* Conversion between Get/Set */ 812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent // Equalizer 82163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent int CurPreset; /* Current preset being used */ 832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent // Virtualzer 84163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent int VirtStrengthSaved; /* Conversion between Get/Set */ 852c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent // Volume 862c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent int levelSaved; /* for when mute is set, level must be saved */ 87163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent int positionSaved; 88163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent bool bMuteEnabled; /* Must store as mute = -96dB level */ 89163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent bool bStereoPositionEnabled; 90163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent int frameCount; 91163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent LVM_Fs_en SampleRate; 92163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent #ifdef LVM_PCM 93163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent FILE *PcmInPtr; 94163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent FILE *PcmOutPtr; 95163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent #endif 962c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent}; 972c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 982c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* SessionContext : One session */ 992c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentstruct SessionContext{ 1002c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent bool bBundledEffectsEnabled; 101163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent bool bVolumeInstantiated; 1022c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent bool bEqualizerInstantiated; 1032c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent bool bBassInstantiated; 104163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent bool bVirtualizerInstantiated; 105163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent BundledEffectContext *pBundledContext; 1062c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent}; 1072c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1082c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentstruct EffectContext{ 1092c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent const struct effect_interface_s *itfe; 1102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent effect_config_t config; 1112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent lvm_effect_en EffectType; 112163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent BundledEffectContext *pBundledContext; 1132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent}; 1142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent//TODO: this should be included from each effect API include 1162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* enumerated parameter settings for BassBoost effect */ 1172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef enum 1182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 1192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent BASSBOOST_PARAM_STRENGTH_SUP, // type SLboolean = typedef SLuint32 1202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent BASSBOOST_PARAM_STRENGTH // type SLpermille = typedef SLuint16 1212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} t_bassboost_params; 1222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* enumerated parameter settings for Virtualizer effect */ 1242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef enum 1252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 1262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent VIRTUALIZER_PARAM_STRENGTH_SUP, // type SLboolean = typedef SLuint32 1272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent VIRTUALIZER_PARAM_STRENGTH // type SLpermille = typedef SLuint16 1282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} t_virtualizer_params; 1292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* enumerated parameter settings for Equalizer effect */ 1312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef enum 1322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 133163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent EQ_PARAM_NUM_BANDS, // Gets the number of frequency bands that the equalizer supports. 134163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent EQ_PARAM_LEVEL_RANGE, // Returns the minimum and maximum band levels supported. 135163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent EQ_PARAM_BAND_LEVEL, // Gets/Sets the gain set for the given equalizer band. 136163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent EQ_PARAM_CENTER_FREQ, // Gets the center frequency of the given band. 137163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent EQ_PARAM_BAND_FREQ_RANGE, // Gets the frequency range of the given frequency band. 138163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent EQ_PARAM_GET_BAND, // Gets the band that has the most effect on the given frequency. 139163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent EQ_PARAM_CUR_PRESET, // Gets/Sets the current preset. 140163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent EQ_PARAM_GET_NUM_OF_PRESETS, // Gets the total number of presets the equalizer supports. 141163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent EQ_PARAM_GET_PRESET_NAME // Gets the preset name based on the index. 1422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} t_equalizer_params; 1432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* enumerated parameter settings for Volume effect */ 1452c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef enum 1462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 1472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent VOLUME_PARAM_LEVEL, // type SLmillibel = typedef SLuint16 (set & get) 1482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent VOLUME_PARAM_MAXLEVEL, // type SLmillibel = typedef SLuint16 (get) 1492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent VOLUME_PARAM_MUTE, // type SLboolean = typedef SLuint32 (set & get) 1502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent VOLUME_PARAM_ENABLESTEREOPOSITION, // type SLboolean = typedef SLuint32 (set & get) 1512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent VOLUME_PARAM_STEREOPOSITION, // type SLpermille = typedef SLuint16 (set & get) 1522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} t_volume_params; 1532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentstatic const int PRESET_CUSTOM = -1; 1552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentstatic const uint32_t bandFreqRange[FIVEBAND_NUMBANDS][2] = { 157163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent {30000, 120000}, 158163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent {120001, 460000}, 159163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent {460001, 1800000}, 160163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent {1800001, 7000000}, 161163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent {7000001, 1}}; 1622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentstatic const LVM_UINT16 EQNB_5BandPresetsFrequencies[] = { 164163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent 60, /* Frequencies in Hz */ 165163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent 230, 166163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent 910, 167163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent 3600, 168163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent 14000}; 1692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentstatic const LVM_UINT16 EQNB_5BandPresetsQFactors[] = { 171163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent 96, /* Q factor multiplied by 100 */ 172163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent 96, 173163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent 96, 174163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent 96, 175163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent 96}; 1762c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentstatic const LVM_INT16 EQNB_5BandNormalPresets[] = { 178163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent 3, 0, 0, 0, 3, /* Normal Preset */ 1792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 8, 5, -3, 5, 6, /* Classical Preset */ 1802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 15, -6, 7, 13, 10, /* Dance Preset */ 1812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 0, 0, 0, 0, 0, /* Flat Preset */ 1822c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 6, -2, -2, 6, -3, /* Folk Preset */ 1832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 8, -8, 13, -1, -4, /* Heavy Metal Preset */ 1842c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 10, 6, -4, 5, 8, /* Hip Hop Preset */ 1852c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 8, 5, -4, 5, 9, /* Jazz Preset */ 1862c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent -6, 4, 9, 4, -5, /* Pop Preset */ 1872c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 10, 6, -1, 8, 10}; /* Rock Preset */ 1882c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 189163fbcf84010b98e0374110454d85b804bc8d13bEric Laurentstatic const LVM_INT16 EQNB_5BandSoftPresets[] = { 190163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent 3, 0, 0, 0, 3, /* Normal Preset */ 191163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent 5, 3, -2, 4, 4, /* Classical Preset */ 192163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent 6, 0, 2, 4, 1, /* Dance Preset */ 193163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent 0, 0, 0, 0, 0, /* Flat Preset */ 194163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent 3, 0, 0, 2, -1, /* Folk Preset */ 195163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent 4, 1, 9, 3, 0, /* Heavy Metal Preset */ 196163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent 5, 3, 0, 1, 3, /* Hip Hop Preset */ 197163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent 4, 2, -2, 2, 5, /* Jazz Preset */ 198163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent -1, 2, 5, 1, -2, /* Pop Preset */ 199163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent 5, 3, -1, 3, 5}; /* Rock Preset */ 200163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent 2012c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentstatic const PresetConfig gEqualizerPresets[] = { 202163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent {"Normal"}, 203163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent {"Classical"}, 204163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent {"Dance"}, 205163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent {"Flat"}, 206163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent {"Folk"}, 207163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent {"Heavy Metal"}, 208163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent {"Hip Hop"}, 209163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent {"Jazz"}, 210163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent {"Pop"}, 211163fbcf84010b98e0374110454d85b804bc8d13bEric Laurent {"Rock"}}; 2122c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#if __cplusplus 2142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} // extern "C" 2152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif 2162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /*ANDROID_EFFECTBUNDLE_H_*/ 219