1*4d7e907cSAndroid Build Coastguard Worker/* 2*4d7e907cSAndroid Build Coastguard Worker * Copyright (C) 2020 The Android Open Source Project 3*4d7e907cSAndroid Build Coastguard Worker * 4*4d7e907cSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*4d7e907cSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*4d7e907cSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*4d7e907cSAndroid Build Coastguard Worker * 8*4d7e907cSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*4d7e907cSAndroid Build Coastguard Worker * 10*4d7e907cSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*4d7e907cSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*4d7e907cSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*4d7e907cSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*4d7e907cSAndroid Build Coastguard Worker * limitations under the License. 15*4d7e907cSAndroid Build Coastguard Worker */ 16*4d7e907cSAndroid Build Coastguard Worker 17*4d7e907cSAndroid Build Coastguard Workerpackage [email protected]; 18*4d7e907cSAndroid Build Coastguard Worker 19*4d7e907cSAndroid Build Coastguard Workerimport [email protected]; 20*4d7e907cSAndroid Build Coastguard Workerimport IEffectBufferProviderCallback; 21*4d7e907cSAndroid Build Coastguard Worker 22*4d7e907cSAndroid Build Coastguard Workerinterface IEffect { 23*4d7e907cSAndroid Build Coastguard Worker /** 24*4d7e907cSAndroid Build Coastguard Worker * Initialize effect engine--all configurations return to default. 25*4d7e907cSAndroid Build Coastguard Worker * 26*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 27*4d7e907cSAndroid Build Coastguard Worker */ 28*4d7e907cSAndroid Build Coastguard Worker @entry 29*4d7e907cSAndroid Build Coastguard Worker init() generates (Result retval); 30*4d7e907cSAndroid Build Coastguard Worker 31*4d7e907cSAndroid Build Coastguard Worker /** 32*4d7e907cSAndroid Build Coastguard Worker * Apply new audio parameters configurations for input and output buffers. 33*4d7e907cSAndroid Build Coastguard Worker * The provider callbacks may be empty, but in this case the buffer 34*4d7e907cSAndroid Build Coastguard Worker * must be provided in the EffectConfig structure. 35*4d7e907cSAndroid Build Coastguard Worker * 36*4d7e907cSAndroid Build Coastguard Worker * @param config configuration descriptor. 37*4d7e907cSAndroid Build Coastguard Worker * @param inputBufferProvider optional buffer provider reference. 38*4d7e907cSAndroid Build Coastguard Worker * @param outputBufferProvider optional buffer provider reference. 39*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 40*4d7e907cSAndroid Build Coastguard Worker */ 41*4d7e907cSAndroid Build Coastguard Worker setConfig(EffectConfig config, 42*4d7e907cSAndroid Build Coastguard Worker IEffectBufferProviderCallback inputBufferProvider, 43*4d7e907cSAndroid Build Coastguard Worker IEffectBufferProviderCallback outputBufferProvider) 44*4d7e907cSAndroid Build Coastguard Worker generates (Result retval); 45*4d7e907cSAndroid Build Coastguard Worker 46*4d7e907cSAndroid Build Coastguard Worker /** 47*4d7e907cSAndroid Build Coastguard Worker * Reset the effect engine. Keep configuration but resets state and buffer 48*4d7e907cSAndroid Build Coastguard Worker * content. 49*4d7e907cSAndroid Build Coastguard Worker * 50*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 51*4d7e907cSAndroid Build Coastguard Worker */ 52*4d7e907cSAndroid Build Coastguard Worker reset() generates (Result retval); 53*4d7e907cSAndroid Build Coastguard Worker 54*4d7e907cSAndroid Build Coastguard Worker /** 55*4d7e907cSAndroid Build Coastguard Worker * Enable processing. 56*4d7e907cSAndroid Build Coastguard Worker * 57*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 58*4d7e907cSAndroid Build Coastguard Worker */ 59*4d7e907cSAndroid Build Coastguard Worker enable() generates (Result retval); 60*4d7e907cSAndroid Build Coastguard Worker 61*4d7e907cSAndroid Build Coastguard Worker /** 62*4d7e907cSAndroid Build Coastguard Worker * Disable processing. 63*4d7e907cSAndroid Build Coastguard Worker * 64*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 65*4d7e907cSAndroid Build Coastguard Worker */ 66*4d7e907cSAndroid Build Coastguard Worker disable() generates (Result retval); 67*4d7e907cSAndroid Build Coastguard Worker 68*4d7e907cSAndroid Build Coastguard Worker /** 69*4d7e907cSAndroid Build Coastguard Worker * Set the rendering device the audio output path is connected to. The 70*4d7e907cSAndroid Build Coastguard Worker * effect implementation must set EFFECT_FLAG_DEVICE_IND flag in its 71*4d7e907cSAndroid Build Coastguard Worker * descriptor to receive this command when the device changes. 72*4d7e907cSAndroid Build Coastguard Worker * 73*4d7e907cSAndroid Build Coastguard Worker * Note: this method is only supported for effects inserted into 74*4d7e907cSAndroid Build Coastguard Worker * the output chain. 75*4d7e907cSAndroid Build Coastguard Worker * 76*4d7e907cSAndroid Build Coastguard Worker * @param device output device specification. 77*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 78*4d7e907cSAndroid Build Coastguard Worker */ 79*4d7e907cSAndroid Build Coastguard Worker setDevice(DeviceAddress device) generates (Result retval); 80*4d7e907cSAndroid Build Coastguard Worker 81*4d7e907cSAndroid Build Coastguard Worker /** 82*4d7e907cSAndroid Build Coastguard Worker * Set and get volume. Used by audio framework to delegate volume control to 83*4d7e907cSAndroid Build Coastguard Worker * effect engine. The effect implementation must set EFFECT_FLAG_VOLUME_CTRL 84*4d7e907cSAndroid Build Coastguard Worker * flag in its descriptor to receive this command. The effect engine must 85*4d7e907cSAndroid Build Coastguard Worker * return the volume that should be applied before the effect is 86*4d7e907cSAndroid Build Coastguard Worker * processed. The overall volume (the volume actually applied by the effect 87*4d7e907cSAndroid Build Coastguard Worker * engine multiplied by the returned value) should match the value indicated 88*4d7e907cSAndroid Build Coastguard Worker * in the command. 89*4d7e907cSAndroid Build Coastguard Worker * 90*4d7e907cSAndroid Build Coastguard Worker * @param volumes vector containing volume for each channel defined in 91*4d7e907cSAndroid Build Coastguard Worker * EffectConfig for output buffer expressed in 8.24 fixed 92*4d7e907cSAndroid Build Coastguard Worker * point format. 93*4d7e907cSAndroid Build Coastguard Worker * @return result updated volume values. 94*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 95*4d7e907cSAndroid Build Coastguard Worker */ 96*4d7e907cSAndroid Build Coastguard Worker setAndGetVolume(vec<uint32_t> volumes) 97*4d7e907cSAndroid Build Coastguard Worker generates (Result retval, vec<uint32_t> result); 98*4d7e907cSAndroid Build Coastguard Worker 99*4d7e907cSAndroid Build Coastguard Worker /** 100*4d7e907cSAndroid Build Coastguard Worker * Notify the effect of the volume change. The effect implementation must 101*4d7e907cSAndroid Build Coastguard Worker * set EFFECT_FLAG_VOLUME_IND flag in its descriptor to receive this 102*4d7e907cSAndroid Build Coastguard Worker * command. 103*4d7e907cSAndroid Build Coastguard Worker * 104*4d7e907cSAndroid Build Coastguard Worker * @param volumes vector containing volume for each channel defined in 105*4d7e907cSAndroid Build Coastguard Worker * EffectConfig for output buffer expressed in 8.24 fixed 106*4d7e907cSAndroid Build Coastguard Worker * point format. 107*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 108*4d7e907cSAndroid Build Coastguard Worker */ 109*4d7e907cSAndroid Build Coastguard Worker volumeChangeNotification(vec<uint32_t> volumes) 110*4d7e907cSAndroid Build Coastguard Worker generates (Result retval); 111*4d7e907cSAndroid Build Coastguard Worker 112*4d7e907cSAndroid Build Coastguard Worker /** 113*4d7e907cSAndroid Build Coastguard Worker * Set the audio mode. The effect implementation must set 114*4d7e907cSAndroid Build Coastguard Worker * EFFECT_FLAG_AUDIO_MODE_IND flag in its descriptor to receive this command 115*4d7e907cSAndroid Build Coastguard Worker * when the audio mode changes. 116*4d7e907cSAndroid Build Coastguard Worker * 117*4d7e907cSAndroid Build Coastguard Worker * @param mode desired audio mode. 118*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 119*4d7e907cSAndroid Build Coastguard Worker */ 120*4d7e907cSAndroid Build Coastguard Worker setAudioMode(AudioMode mode) generates (Result retval); 121*4d7e907cSAndroid Build Coastguard Worker 122*4d7e907cSAndroid Build Coastguard Worker /** 123*4d7e907cSAndroid Build Coastguard Worker * Apply new audio parameters configurations for input and output buffers of 124*4d7e907cSAndroid Build Coastguard Worker * reverse stream. An example of reverse stream is the echo reference 125*4d7e907cSAndroid Build Coastguard Worker * supplied to an Acoustic Echo Canceler. 126*4d7e907cSAndroid Build Coastguard Worker * 127*4d7e907cSAndroid Build Coastguard Worker * @param config configuration descriptor. 128*4d7e907cSAndroid Build Coastguard Worker * @param inputBufferProvider optional buffer provider reference. 129*4d7e907cSAndroid Build Coastguard Worker * @param outputBufferProvider optional buffer provider reference. 130*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 131*4d7e907cSAndroid Build Coastguard Worker */ 132*4d7e907cSAndroid Build Coastguard Worker setConfigReverse(EffectConfig config, 133*4d7e907cSAndroid Build Coastguard Worker IEffectBufferProviderCallback inputBufferProvider, 134*4d7e907cSAndroid Build Coastguard Worker IEffectBufferProviderCallback outputBufferProvider) 135*4d7e907cSAndroid Build Coastguard Worker generates (Result retval); 136*4d7e907cSAndroid Build Coastguard Worker 137*4d7e907cSAndroid Build Coastguard Worker /** 138*4d7e907cSAndroid Build Coastguard Worker * Set the capture device the audio input path is connected to. The effect 139*4d7e907cSAndroid Build Coastguard Worker * implementation must set EFFECT_FLAG_DEVICE_IND flag in its descriptor to 140*4d7e907cSAndroid Build Coastguard Worker * receive this command when the device changes. 141*4d7e907cSAndroid Build Coastguard Worker * 142*4d7e907cSAndroid Build Coastguard Worker * Note: this method is only supported for effects inserted into 143*4d7e907cSAndroid Build Coastguard Worker * the input chain. 144*4d7e907cSAndroid Build Coastguard Worker * 145*4d7e907cSAndroid Build Coastguard Worker * @param device input device specification. 146*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 147*4d7e907cSAndroid Build Coastguard Worker */ 148*4d7e907cSAndroid Build Coastguard Worker setInputDevice(DeviceAddress device) generates (Result retval); 149*4d7e907cSAndroid Build Coastguard Worker 150*4d7e907cSAndroid Build Coastguard Worker /** 151*4d7e907cSAndroid Build Coastguard Worker * Read audio parameters configurations for input and output buffers. 152*4d7e907cSAndroid Build Coastguard Worker * 153*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 154*4d7e907cSAndroid Build Coastguard Worker * @return config configuration descriptor. 155*4d7e907cSAndroid Build Coastguard Worker */ 156*4d7e907cSAndroid Build Coastguard Worker getConfig() generates (Result retval, EffectConfig config); 157*4d7e907cSAndroid Build Coastguard Worker 158*4d7e907cSAndroid Build Coastguard Worker /** 159*4d7e907cSAndroid Build Coastguard Worker * Read audio parameters configurations for input and output buffers of 160*4d7e907cSAndroid Build Coastguard Worker * reverse stream. 161*4d7e907cSAndroid Build Coastguard Worker * 162*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 163*4d7e907cSAndroid Build Coastguard Worker * @return config configuration descriptor. 164*4d7e907cSAndroid Build Coastguard Worker */ 165*4d7e907cSAndroid Build Coastguard Worker getConfigReverse() generates (Result retval, EffectConfig config); 166*4d7e907cSAndroid Build Coastguard Worker 167*4d7e907cSAndroid Build Coastguard Worker /** 168*4d7e907cSAndroid Build Coastguard Worker * Queries for supported combinations of main and auxiliary channels 169*4d7e907cSAndroid Build Coastguard Worker * (e.g. for a multi-microphone noise suppressor). 170*4d7e907cSAndroid Build Coastguard Worker * 171*4d7e907cSAndroid Build Coastguard Worker * @param maxConfigs maximum number of the combinations to return. 172*4d7e907cSAndroid Build Coastguard Worker * @return retval absence of the feature support is indicated using 173*4d7e907cSAndroid Build Coastguard Worker * NOT_SUPPORTED code. RESULT_TOO_BIG is returned if 174*4d7e907cSAndroid Build Coastguard Worker * the number of supported combinations exceeds 'maxConfigs'. 175*4d7e907cSAndroid Build Coastguard Worker * @return result list of configuration descriptors. 176*4d7e907cSAndroid Build Coastguard Worker */ 177*4d7e907cSAndroid Build Coastguard Worker getSupportedAuxChannelsConfigs(uint32_t maxConfigs) 178*4d7e907cSAndroid Build Coastguard Worker generates (Result retval, vec<EffectAuxChannelsConfig> result); 179*4d7e907cSAndroid Build Coastguard Worker 180*4d7e907cSAndroid Build Coastguard Worker /** 181*4d7e907cSAndroid Build Coastguard Worker * Retrieves the current configuration of main and auxiliary channels. 182*4d7e907cSAndroid Build Coastguard Worker * 183*4d7e907cSAndroid Build Coastguard Worker * @return retval absence of the feature support is indicated using 184*4d7e907cSAndroid Build Coastguard Worker * NOT_SUPPORTED code. 185*4d7e907cSAndroid Build Coastguard Worker * @return result configuration descriptor. 186*4d7e907cSAndroid Build Coastguard Worker */ 187*4d7e907cSAndroid Build Coastguard Worker getAuxChannelsConfig() 188*4d7e907cSAndroid Build Coastguard Worker generates (Result retval, EffectAuxChannelsConfig result); 189*4d7e907cSAndroid Build Coastguard Worker 190*4d7e907cSAndroid Build Coastguard Worker /** 191*4d7e907cSAndroid Build Coastguard Worker * Sets the current configuration of main and auxiliary channels. 192*4d7e907cSAndroid Build Coastguard Worker * 193*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status; absence of the feature 194*4d7e907cSAndroid Build Coastguard Worker * support is indicated using NOT_SUPPORTED code. 195*4d7e907cSAndroid Build Coastguard Worker */ 196*4d7e907cSAndroid Build Coastguard Worker setAuxChannelsConfig(EffectAuxChannelsConfig config) 197*4d7e907cSAndroid Build Coastguard Worker generates (Result retval); 198*4d7e907cSAndroid Build Coastguard Worker 199*4d7e907cSAndroid Build Coastguard Worker /** 200*4d7e907cSAndroid Build Coastguard Worker * Set the audio source the capture path is configured for (Camcorder, voice 201*4d7e907cSAndroid Build Coastguard Worker * recognition...). 202*4d7e907cSAndroid Build Coastguard Worker * 203*4d7e907cSAndroid Build Coastguard Worker * Note: this method is only supported for effects inserted into 204*4d7e907cSAndroid Build Coastguard Worker * the input chain. 205*4d7e907cSAndroid Build Coastguard Worker * 206*4d7e907cSAndroid Build Coastguard Worker * @param source source descriptor. 207*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 208*4d7e907cSAndroid Build Coastguard Worker */ 209*4d7e907cSAndroid Build Coastguard Worker setAudioSource(AudioSource source) generates (Result retval); 210*4d7e907cSAndroid Build Coastguard Worker 211*4d7e907cSAndroid Build Coastguard Worker /** 212*4d7e907cSAndroid Build Coastguard Worker * This command indicates if the playback thread the effect is attached to 213*4d7e907cSAndroid Build Coastguard Worker * is offloaded or not, and updates the I/O handle of the playback thread 214*4d7e907cSAndroid Build Coastguard Worker * the effect is attached to. 215*4d7e907cSAndroid Build Coastguard Worker * 216*4d7e907cSAndroid Build Coastguard Worker * @param param effect offload descriptor. 217*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 218*4d7e907cSAndroid Build Coastguard Worker */ 219*4d7e907cSAndroid Build Coastguard Worker offload(EffectOffloadParameter param) generates (Result retval); 220*4d7e907cSAndroid Build Coastguard Worker 221*4d7e907cSAndroid Build Coastguard Worker /** 222*4d7e907cSAndroid Build Coastguard Worker * Returns the effect descriptor. 223*4d7e907cSAndroid Build Coastguard Worker * 224*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 225*4d7e907cSAndroid Build Coastguard Worker * @return descriptor effect descriptor. 226*4d7e907cSAndroid Build Coastguard Worker */ 227*4d7e907cSAndroid Build Coastguard Worker getDescriptor() generates (Result retval, EffectDescriptor descriptor); 228*4d7e907cSAndroid Build Coastguard Worker 229*4d7e907cSAndroid Build Coastguard Worker /** 230*4d7e907cSAndroid Build Coastguard Worker * Set up required transports for passing audio buffers to the effect. 231*4d7e907cSAndroid Build Coastguard Worker * 232*4d7e907cSAndroid Build Coastguard Worker * The transport consists of shared memory and a message queue for reporting 233*4d7e907cSAndroid Build Coastguard Worker * effect processing operation status. The shared memory is set up 234*4d7e907cSAndroid Build Coastguard Worker * separately using 'setProcessBuffers' method. 235*4d7e907cSAndroid Build Coastguard Worker * 236*4d7e907cSAndroid Build Coastguard Worker * Processing is requested by setting 'REQUEST_PROCESS' or 237*4d7e907cSAndroid Build Coastguard Worker * 'REQUEST_PROCESS_REVERSE' EventFlags associated with the status message 238*4d7e907cSAndroid Build Coastguard Worker * queue. The result of processing may be one of the following: 239*4d7e907cSAndroid Build Coastguard Worker * OK if there were no errors during processing; 240*4d7e907cSAndroid Build Coastguard Worker * INVALID_ARGUMENTS if audio buffers are invalid; 241*4d7e907cSAndroid Build Coastguard Worker * INVALID_STATE if the engine has finished the disable phase; 242*4d7e907cSAndroid Build Coastguard Worker * NOT_INITIALIZED if the audio buffers were not set; 243*4d7e907cSAndroid Build Coastguard Worker * NOT_SUPPORTED if the requested processing type is not supported by 244*4d7e907cSAndroid Build Coastguard Worker * the effect. 245*4d7e907cSAndroid Build Coastguard Worker * 246*4d7e907cSAndroid Build Coastguard Worker * @return retval OK if both message queues were created successfully. 247*4d7e907cSAndroid Build Coastguard Worker * INVALID_STATE if the method was already called. 248*4d7e907cSAndroid Build Coastguard Worker * INVALID_ARGUMENTS if there was a problem setting up 249*4d7e907cSAndroid Build Coastguard Worker * the queue. 250*4d7e907cSAndroid Build Coastguard Worker * @return statusMQ a message queue used for passing status from the effect. 251*4d7e907cSAndroid Build Coastguard Worker */ 252*4d7e907cSAndroid Build Coastguard Worker prepareForProcessing() generates (Result retval, fmq_sync<Result> statusMQ); 253*4d7e907cSAndroid Build Coastguard Worker 254*4d7e907cSAndroid Build Coastguard Worker /** 255*4d7e907cSAndroid Build Coastguard Worker * Set up input and output buffers for processing audio data. The effect 256*4d7e907cSAndroid Build Coastguard Worker * may modify both the input and the output buffer during the operation. 257*4d7e907cSAndroid Build Coastguard Worker * Buffers may be set multiple times during effect lifetime. 258*4d7e907cSAndroid Build Coastguard Worker * 259*4d7e907cSAndroid Build Coastguard Worker * The input and the output buffer may be reused between different effects, 260*4d7e907cSAndroid Build Coastguard Worker * and the input buffer may be used as an output buffer. Buffers are 261*4d7e907cSAndroid Build Coastguard Worker * distinguished using 'AudioBuffer.id' field. 262*4d7e907cSAndroid Build Coastguard Worker * 263*4d7e907cSAndroid Build Coastguard Worker * @param inBuffer input audio buffer. 264*4d7e907cSAndroid Build Coastguard Worker * @param outBuffer output audio buffer. 265*4d7e907cSAndroid Build Coastguard Worker * @return retval OK if both buffers were mapped successfully. 266*4d7e907cSAndroid Build Coastguard Worker * INVALID_ARGUMENTS if there was a problem with mapping 267*4d7e907cSAndroid Build Coastguard Worker * any of the buffers. 268*4d7e907cSAndroid Build Coastguard Worker */ 269*4d7e907cSAndroid Build Coastguard Worker setProcessBuffers(AudioBuffer inBuffer, AudioBuffer outBuffer) 270*4d7e907cSAndroid Build Coastguard Worker generates (Result retval); 271*4d7e907cSAndroid Build Coastguard Worker 272*4d7e907cSAndroid Build Coastguard Worker /** 273*4d7e907cSAndroid Build Coastguard Worker * Execute a vendor specific command on the effect. The command code 274*4d7e907cSAndroid Build Coastguard Worker * and data, as well as result data are not interpreted by Android 275*4d7e907cSAndroid Build Coastguard Worker * Framework and are passed as-is between the application and the effect. 276*4d7e907cSAndroid Build Coastguard Worker * 277*4d7e907cSAndroid Build Coastguard Worker * The effect must use standard POSIX.1-2001 error codes for the operation 278*4d7e907cSAndroid Build Coastguard Worker * completion status. 279*4d7e907cSAndroid Build Coastguard Worker * 280*4d7e907cSAndroid Build Coastguard Worker * Use this method only if the effect is provided by a third party, and 281*4d7e907cSAndroid Build Coastguard Worker * there is no interface defined for it. This method only works for effects 282*4d7e907cSAndroid Build Coastguard Worker * implemented in software. 283*4d7e907cSAndroid Build Coastguard Worker * 284*4d7e907cSAndroid Build Coastguard Worker * @param commandId the ID of the command. 285*4d7e907cSAndroid Build Coastguard Worker * @param data command data. 286*4d7e907cSAndroid Build Coastguard Worker * @param resultMaxSize maximum size in bytes of the result; can be 0. 287*4d7e907cSAndroid Build Coastguard Worker * @return status command completion status. 288*4d7e907cSAndroid Build Coastguard Worker * @return result result data. 289*4d7e907cSAndroid Build Coastguard Worker */ 290*4d7e907cSAndroid Build Coastguard Worker command(uint32_t commandId, vec<uint8_t> data, uint32_t resultMaxSize) 291*4d7e907cSAndroid Build Coastguard Worker generates (int32_t status, vec<uint8_t> result); 292*4d7e907cSAndroid Build Coastguard Worker 293*4d7e907cSAndroid Build Coastguard Worker /** 294*4d7e907cSAndroid Build Coastguard Worker * Set a vendor-specific parameter and apply it immediately. The parameter 295*4d7e907cSAndroid Build Coastguard Worker * code and data are not interpreted by Android Framework and are passed 296*4d7e907cSAndroid Build Coastguard Worker * as-is between the application and the effect. 297*4d7e907cSAndroid Build Coastguard Worker * 298*4d7e907cSAndroid Build Coastguard Worker * The effect must use INVALID_ARGUMENTS return code if the parameter ID is 299*4d7e907cSAndroid Build Coastguard Worker * unknown or if provided parameter data is invalid. If the effect does not 300*4d7e907cSAndroid Build Coastguard Worker * support setting vendor-specific parameters, it must return NOT_SUPPORTED. 301*4d7e907cSAndroid Build Coastguard Worker * 302*4d7e907cSAndroid Build Coastguard Worker * Use this method only if the effect is provided by a third party, and 303*4d7e907cSAndroid Build Coastguard Worker * there is no interface defined for it. This method only works for effects 304*4d7e907cSAndroid Build Coastguard Worker * implemented in software. 305*4d7e907cSAndroid Build Coastguard Worker * 306*4d7e907cSAndroid Build Coastguard Worker * @param parameter identifying data of the parameter. 307*4d7e907cSAndroid Build Coastguard Worker * @param value the value of the parameter. 308*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 309*4d7e907cSAndroid Build Coastguard Worker */ 310*4d7e907cSAndroid Build Coastguard Worker setParameter(vec<uint8_t> parameter, vec<uint8_t> value) 311*4d7e907cSAndroid Build Coastguard Worker generates (Result retval); 312*4d7e907cSAndroid Build Coastguard Worker 313*4d7e907cSAndroid Build Coastguard Worker /** 314*4d7e907cSAndroid Build Coastguard Worker * Get a vendor-specific parameter value. The parameter code and returned 315*4d7e907cSAndroid Build Coastguard Worker * data are not interpreted by Android Framework and are passed as-is 316*4d7e907cSAndroid Build Coastguard Worker * between the application and the effect. 317*4d7e907cSAndroid Build Coastguard Worker * 318*4d7e907cSAndroid Build Coastguard Worker * The effect must use INVALID_ARGUMENTS return code if the parameter ID is 319*4d7e907cSAndroid Build Coastguard Worker * unknown. If the effect does not support setting vendor-specific 320*4d7e907cSAndroid Build Coastguard Worker * parameters, it must return NOT_SUPPORTED. 321*4d7e907cSAndroid Build Coastguard Worker * 322*4d7e907cSAndroid Build Coastguard Worker * Use this method only if the effect is provided by a third party, and 323*4d7e907cSAndroid Build Coastguard Worker * there is no interface defined for it. This method only works for effects 324*4d7e907cSAndroid Build Coastguard Worker * implemented in software. 325*4d7e907cSAndroid Build Coastguard Worker * 326*4d7e907cSAndroid Build Coastguard Worker * @param parameter identifying data of the parameter. 327*4d7e907cSAndroid Build Coastguard Worker * @param valueMaxSize maximum size in bytes of the value. 328*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 329*4d7e907cSAndroid Build Coastguard Worker * @return result the value of the parameter. 330*4d7e907cSAndroid Build Coastguard Worker */ 331*4d7e907cSAndroid Build Coastguard Worker getParameter(vec<uint8_t> parameter, uint32_t valueMaxSize) 332*4d7e907cSAndroid Build Coastguard Worker generates (Result retval, vec<uint8_t> value); 333*4d7e907cSAndroid Build Coastguard Worker 334*4d7e907cSAndroid Build Coastguard Worker /** 335*4d7e907cSAndroid Build Coastguard Worker * Get supported configs for a vendor-specific feature. The configs returned 336*4d7e907cSAndroid Build Coastguard Worker * are not interpreted by Android Framework and are passed as-is between the 337*4d7e907cSAndroid Build Coastguard Worker * application and the effect. 338*4d7e907cSAndroid Build Coastguard Worker * 339*4d7e907cSAndroid Build Coastguard Worker * The effect must use INVALID_ARGUMENTS return code if the feature ID is 340*4d7e907cSAndroid Build Coastguard Worker * unknown. If the effect does not support getting vendor-specific feature 341*4d7e907cSAndroid Build Coastguard Worker * configs, it must return NOT_SUPPORTED. If the feature is supported but 342*4d7e907cSAndroid Build Coastguard Worker * the total number of supported configurations exceeds the maximum number 343*4d7e907cSAndroid Build Coastguard Worker * indicated by the caller, the method must return RESULT_TOO_BIG. 344*4d7e907cSAndroid Build Coastguard Worker * 345*4d7e907cSAndroid Build Coastguard Worker * Use this method only if the effect is provided by a third party, and 346*4d7e907cSAndroid Build Coastguard Worker * there is no interface defined for it. This method only works for effects 347*4d7e907cSAndroid Build Coastguard Worker * implemented in software. 348*4d7e907cSAndroid Build Coastguard Worker * 349*4d7e907cSAndroid Build Coastguard Worker * @param featureId feature identifier. 350*4d7e907cSAndroid Build Coastguard Worker * @param maxConfigs maximum number of configs to return. 351*4d7e907cSAndroid Build Coastguard Worker * @param configSize size of each config in bytes. 352*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 353*4d7e907cSAndroid Build Coastguard Worker * @return configsCount number of configs returned. 354*4d7e907cSAndroid Build Coastguard Worker * @return configsData data for all the configs returned. 355*4d7e907cSAndroid Build Coastguard Worker */ 356*4d7e907cSAndroid Build Coastguard Worker getSupportedConfigsForFeature( 357*4d7e907cSAndroid Build Coastguard Worker uint32_t featureId, 358*4d7e907cSAndroid Build Coastguard Worker uint32_t maxConfigs, 359*4d7e907cSAndroid Build Coastguard Worker uint32_t configSize) generates ( 360*4d7e907cSAndroid Build Coastguard Worker Result retval, 361*4d7e907cSAndroid Build Coastguard Worker uint32_t configsCount, 362*4d7e907cSAndroid Build Coastguard Worker vec<uint8_t> configsData); 363*4d7e907cSAndroid Build Coastguard Worker 364*4d7e907cSAndroid Build Coastguard Worker /** 365*4d7e907cSAndroid Build Coastguard Worker * Get the current config for a vendor-specific feature. The config returned 366*4d7e907cSAndroid Build Coastguard Worker * is not interpreted by Android Framework and is passed as-is between the 367*4d7e907cSAndroid Build Coastguard Worker * application and the effect. 368*4d7e907cSAndroid Build Coastguard Worker * 369*4d7e907cSAndroid Build Coastguard Worker * The effect must use INVALID_ARGUMENTS return code if the feature ID is 370*4d7e907cSAndroid Build Coastguard Worker * unknown. If the effect does not support getting vendor-specific 371*4d7e907cSAndroid Build Coastguard Worker * feature configs, it must return NOT_SUPPORTED. 372*4d7e907cSAndroid Build Coastguard Worker * 373*4d7e907cSAndroid Build Coastguard Worker * Use this method only if the effect is provided by a third party, and 374*4d7e907cSAndroid Build Coastguard Worker * there is no interface defined for it. This method only works for effects 375*4d7e907cSAndroid Build Coastguard Worker * implemented in software. 376*4d7e907cSAndroid Build Coastguard Worker * 377*4d7e907cSAndroid Build Coastguard Worker * @param featureId feature identifier. 378*4d7e907cSAndroid Build Coastguard Worker * @param configSize size of the config in bytes. 379*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 380*4d7e907cSAndroid Build Coastguard Worker * @return configData config data. 381*4d7e907cSAndroid Build Coastguard Worker */ 382*4d7e907cSAndroid Build Coastguard Worker getCurrentConfigForFeature(uint32_t featureId, uint32_t configSize) 383*4d7e907cSAndroid Build Coastguard Worker generates (Result retval, vec<uint8_t> configData); 384*4d7e907cSAndroid Build Coastguard Worker 385*4d7e907cSAndroid Build Coastguard Worker /** 386*4d7e907cSAndroid Build Coastguard Worker * Set the current config for a vendor-specific feature. The config data 387*4d7e907cSAndroid Build Coastguard Worker * is not interpreted by Android Framework and is passed as-is between the 388*4d7e907cSAndroid Build Coastguard Worker * application and the effect. 389*4d7e907cSAndroid Build Coastguard Worker * 390*4d7e907cSAndroid Build Coastguard Worker * The effect must use INVALID_ARGUMENTS return code if the feature ID is 391*4d7e907cSAndroid Build Coastguard Worker * unknown. If the effect does not support getting vendor-specific 392*4d7e907cSAndroid Build Coastguard Worker * feature configs, it must return NOT_SUPPORTED. 393*4d7e907cSAndroid Build Coastguard Worker * 394*4d7e907cSAndroid Build Coastguard Worker * Use this method only if the effect is provided by a third party, and 395*4d7e907cSAndroid Build Coastguard Worker * there is no interface defined for it. This method only works for effects 396*4d7e907cSAndroid Build Coastguard Worker * implemented in software. 397*4d7e907cSAndroid Build Coastguard Worker * 398*4d7e907cSAndroid Build Coastguard Worker * @param featureId feature identifier. 399*4d7e907cSAndroid Build Coastguard Worker * @param configData config data. 400*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 401*4d7e907cSAndroid Build Coastguard Worker */ 402*4d7e907cSAndroid Build Coastguard Worker setCurrentConfigForFeature(uint32_t featureId, vec<uint8_t> configData) 403*4d7e907cSAndroid Build Coastguard Worker generates (Result retval); 404*4d7e907cSAndroid Build Coastguard Worker 405*4d7e907cSAndroid Build Coastguard Worker /** 406*4d7e907cSAndroid Build Coastguard Worker * Called by the framework to deinitialize the effect and free up 407*4d7e907cSAndroid Build Coastguard Worker * all currently allocated resources. It is recommended to close 408*4d7e907cSAndroid Build Coastguard Worker * the effect on the client side as soon as it is becomes unused. 409*4d7e907cSAndroid Build Coastguard Worker * 410*4d7e907cSAndroid Build Coastguard Worker * The client must ensure that this function is not called while 411*4d7e907cSAndroid Build Coastguard Worker * audio data is being transferred through the effect's message queues. 412*4d7e907cSAndroid Build Coastguard Worker * 413*4d7e907cSAndroid Build Coastguard Worker * @return retval OK in case the success. 414*4d7e907cSAndroid Build Coastguard Worker * INVALID_STATE if the effect was already closed. 415*4d7e907cSAndroid Build Coastguard Worker */ 416*4d7e907cSAndroid Build Coastguard Worker close() generates (Result retval); 417*4d7e907cSAndroid Build Coastguard Worker}; 418