android_Effect.h revision 00667fcca51d62236b538e6857b7e6b923453569
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
94172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi/**************************************************************************************************
95172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi * EffectSend functions
96172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi ****************************/
97172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Triviextern android::status_t android_fxSend_attach(CAudioPlayer* ap, bool attach,
98172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi        android::sp<android::AudioEffect> pFx, SLmillibel sendLevel);
99172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi
100172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Triviextern android::status_t android_fxSend_setSendLevel(CAudioPlayer* ap, SLmillibel sendLevel);
101172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi
102172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi/**************************************************************************************************
103172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi * Effect-agnostic functions
104172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi ****************************/
105172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Triviextern android::status_t android_fx_setParam(android::sp<android::AudioEffect> pFx,
106172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi        int32_t param, uint32_t paramSizeMax, void *pValue, uint32_t valueSize);
107172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi
108172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Triviextern android::status_t android_fx_getParam(android::sp<android::AudioEffect> pFx,
109172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi        int32_t param, uint32_t paramSizeMax, void *pValue, uint32_t valueSize);
110172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi
111172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Triviextern SLresult android_fx_statusToResult(android::status_t status);
112172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi
113172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Triviextern bool android_fx_initEffectObj(int sessionId, android::sp<android::AudioEffect>& effect,
11400667fcca51d62236b538e6857b7e6b923453569Jean-Michel Trivi        const effect_uuid_t *type);
115172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi
116172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Triviextern bool android_fx_initEffectDescriptor(const SLInterfaceID effectId,
117172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi        effect_descriptor_t* fxDescrLoc);
118172e4da556ad3cb1d2a06cfa019903310aa291d5Jean-Michel Trivi
119