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