android_Effect.h revision ca325fa86f9e52d8300490eee102a3c1188f6bdc
14be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi/* 24be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi * Copyright (C) 2010 The Android Open Source Project 34be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi * 44be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi * Licensed under the Apache License, Version 2.0 (the "License"); 54be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi * you may not use this file except in compliance with the License. 64be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi * You may obtain a copy of the License at 74be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi * 84be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi * http://www.apache.org/licenses/LICENSE-2.0 94be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi * 104be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi * Unless required by applicable law or agreed to in writing, software 114be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi * distributed under the License is distributed on an "AS IS" BASIS, 124be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi * See the License for the specific language governing permissions and 144be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi * limitations under the License. 154be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi */ 164be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi 17172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi/************************************************************************************************** 18172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi * Equalizer functions 19172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi ****************************/ 207e01bc6208fb5b4a2a0019d67bf74373f8ee9428Jean-Michel Triviextern void android_eq_init(int sessionId, IEqualizer* ieq); 214be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi 224be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Triviextern android::status_t android_eq_setParam(android::sp<android::AudioEffect> pFx, 234be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi int32_t param, int32_t param2, void *pValue); 244be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi 254be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Triviextern android::status_t android_eq_getParam(android::sp<android::AudioEffect> pFx, 264be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi int32_t param, int32_t param2, void *pValue); 274be7fe875758b42939719a1082ae9e6dbf37a1d7Jean-Michel Trivi 28172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi/************************************************************************************************** 29172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi * BassBoost functions 30172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi ****************************/ 31172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Triviextern void android_bb_init(int sessionId, IBassBoost* ibb); 329cd3c9e7a2395647b92c32f33c06cf9fd546b22fJean-Michel Trivi 339cd3c9e7a2395647b92c32f33c06cf9fd546b22fJean-Michel Triviextern android::status_t android_bb_setParam(android::sp<android::AudioEffect> pFx, 349cd3c9e7a2395647b92c32f33c06cf9fd546b22fJean-Michel Trivi int32_t param, void *pValue); 359cd3c9e7a2395647b92c32f33c06cf9fd546b22fJean-Michel Trivi 369cd3c9e7a2395647b92c32f33c06cf9fd546b22fJean-Michel Triviextern android::status_t android_bb_getParam(android::sp<android::AudioEffect> pFx, 379cd3c9e7a2395647b92c32f33c06cf9fd546b22fJean-Michel Trivi int32_t param, void *pValue); 389cd3c9e7a2395647b92c32f33c06cf9fd546b22fJean-Michel Trivi 39172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi/************************************************************************************************** 40172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi * Virtualizer functions 41172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi ****************************/ 42172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Triviextern void android_virt_init(int sessionId, IVirtualizer* ivi); 43f4aebfe499998c11b31319afb1c7738d4801f7b1Jean-Michel Trivi 44f4aebfe499998c11b31319afb1c7738d4801f7b1Jean-Michel Triviextern android::status_t android_virt_setParam(android::sp<android::AudioEffect> pFx, 45f4aebfe499998c11b31319afb1c7738d4801f7b1Jean-Michel Trivi int32_t param, void *pValue); 46f4aebfe499998c11b31319afb1c7738d4801f7b1Jean-Michel Trivi 47f4aebfe499998c11b31319afb1c7738d4801f7b1Jean-Michel Triviextern android::status_t android_virt_getParam(android::sp<android::AudioEffect> pFx, 48f4aebfe499998c11b31319afb1c7738d4801f7b1Jean-Michel Trivi int32_t param, void *pValue); 49f4aebfe499998c11b31319afb1c7738d4801f7b1Jean-Michel Trivi 50172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi/************************************************************************************************** 51172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi * PresetReverb functions 52172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi ****************************/ 53172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Triviextern void android_prev_init(IPresetReverb* ipr); 5467bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi 55172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Triviextern android::status_t android_prev_setPreset(android::sp<android::AudioEffect> pFx, 56172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi uint16_t preset); 57f4aebfe499998c11b31319afb1c7738d4801f7b1Jean-Michel Trivi 58172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Triviextern android::status_t android_prev_getPreset(android::sp<android::AudioEffect> pFx, 59172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi uint16_t* preset); 60f5fce95f98037ea4ab341b416c82444af595313dJean-Michel Trivi 61172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi/************************************************************************************************** 62172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi * EnvironmentalReverb functions 63172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi ****************************/ 64172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Triviextern void android_erev_init(IEnvironmentalReverb* ier); 6567bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi 66f5afeef3bb2aafba9b4e7c25ab3b9dcf42ee8d65Jean-Michel Triviextern android::status_t android_erev_setParam(android::sp<android::AudioEffect> pFx, 67f5afeef3bb2aafba9b4e7c25ab3b9dcf42ee8d65Jean-Michel Trivi int32_t param, void *pValue); 68f5afeef3bb2aafba9b4e7c25ab3b9dcf42ee8d65Jean-Michel Trivi 69f5afeef3bb2aafba9b4e7c25ab3b9dcf42ee8d65Jean-Michel Triviextern android::status_t android_erev_getParam(android::sp<android::AudioEffect> pFx, 70f5afeef3bb2aafba9b4e7c25ab3b9dcf42ee8d65Jean-Michel Trivi int32_t param, void *pValue); 71f5afeef3bb2aafba9b4e7c25ab3b9dcf42ee8d65Jean-Michel Trivi 72172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi/************************************************************************************************** 73172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi * Generic Effect functions 74172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi ****************************/ 7567bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Triviextern SLresult android_genericFx_queryNumEffects(SLuint32 *pNumSupportedAudioEffects); 7667bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi 775b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Triviextern SLresult android_genericFx_queryEffect(SLuint32 index, effect_descriptor_t* pDescriptor); 7867bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi 795b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Triviextern SLresult android_genericFx_createEffect(IAndroidEffect* iae, SLInterfaceID pUuid, 805b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi int sessionId); 8167bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi 825b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Triviextern SLresult android_genericFx_releaseEffect(IAndroidEffect* iae, SLInterfaceID pUuid); 8367bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi 845b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Triviextern SLresult android_genericFx_setEnabled(IAndroidEffect* iae, SLInterfaceID pUuid, 855b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi SLboolean enabled); 8667bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi 875b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Triviextern SLresult android_genericFx_isEnabled(IAndroidEffect* iae, SLInterfaceID pUuid, 885b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi SLboolean *pEnabled); 8967bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi 905b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Triviextern SLresult android_genericFx_sendCommand(IAndroidEffect* iae, SLInterfaceID pUuid, 915b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi SLuint32 command, SLuint32 commandSize, void* pCommandData, 925b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi SLuint32 *replySize, void *pReplyData); 9367bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi 94fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Triviextern bool android_genericFx_hasEffect(IAndroidEffect* iae, SLInterfaceID pUuid); 95fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi 96fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi 97172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi/************************************************************************************************** 98172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi * EffectSend functions 99172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi ****************************/ 100ca325fa86f9e52d8300490eee102a3c1188f6bdcJean-Michel Trivi/** 101ca325fa86f9e52d8300490eee102a3c1188f6bdcJean-Michel Trivi * sendLevel is the total energy going to the send bus. This implies that the volume attenuation 102ca325fa86f9e52d8300490eee102a3c1188f6bdcJean-Michel Trivi * should be combined with the send level for the aux level to follow volume changes. 103ca325fa86f9e52d8300490eee102a3c1188f6bdcJean-Michel Trivi */ 104172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Triviextern android::status_t android_fxSend_attach(CAudioPlayer* ap, bool attach, 105172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi android::sp<android::AudioEffect> pFx, SLmillibel sendLevel); 106172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi 107ca325fa86f9e52d8300490eee102a3c1188f6bdcJean-Michel Trivi/** 108ca325fa86f9e52d8300490eee102a3c1188f6bdcJean-Michel Trivi * sendLevel is the total energy going to the send bus. This implies that the volume attenuation 109ca325fa86f9e52d8300490eee102a3c1188f6bdcJean-Michel Trivi * should be combined with the send level for the aux level to follow volume changes. 110ca325fa86f9e52d8300490eee102a3c1188f6bdcJean-Michel Trivi */ 111fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Triviextern SLresult android_fxSend_attachToAux(CAudioPlayer* ap, SLInterfaceID pUuid, 112fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi SLboolean attach, SLmillibel sendLevel); 113fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi 114ca325fa86f9e52d8300490eee102a3c1188f6bdcJean-Michel Trivi/** 115ca325fa86f9e52d8300490eee102a3c1188f6bdcJean-Michel Trivi * sendLevel is the total energy going to the send bus. This implies that the volume attenuation 116ca325fa86f9e52d8300490eee102a3c1188f6bdcJean-Michel Trivi * should be combined with the send level for the aux level to follow volume changes. 117ca325fa86f9e52d8300490eee102a3c1188f6bdcJean-Michel Trivi */ 118172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Triviextern android::status_t android_fxSend_setSendLevel(CAudioPlayer* ap, SLmillibel sendLevel); 119172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi 120172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi/************************************************************************************************** 121172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi * Effect-agnostic functions 122172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi ****************************/ 123172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Triviextern android::status_t android_fx_setParam(android::sp<android::AudioEffect> pFx, 124172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi int32_t param, uint32_t paramSizeMax, void *pValue, uint32_t valueSize); 125172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi 126172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Triviextern android::status_t android_fx_getParam(android::sp<android::AudioEffect> pFx, 127172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi int32_t param, uint32_t paramSizeMax, void *pValue, uint32_t valueSize); 128172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi 129172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Triviextern SLresult android_fx_statusToResult(android::status_t status); 130172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi 131172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Triviextern bool android_fx_initEffectObj(int sessionId, android::sp<android::AudioEffect>& effect, 13200667fcca51d62236b538e6857b7e6b923453569Jean-Michel Trivi const effect_uuid_t *type); 133172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi 134172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Triviextern bool android_fx_initEffectDescriptor(const SLInterfaceID effectId, 135172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi effect_descriptor_t* fxDescrLoc); 136172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi 137