| /* |
| * Copyright (C) 2010 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef ANDROID_EFFECTSFACTORYAPI_H_ |
| #define ANDROID_EFFECTSFACTORYAPI_H_ |
| |
| #include <cutils/compiler.h> |
| #include <errno.h> |
| #include <stdint.h> |
| #include <sys/types.h> |
| #include <hardware/audio_effect.h> |
| |
| #if __cplusplus |
| extern "C" { |
| #endif |
| |
| ///////////////////////////////////////////////// |
| // Effect factory interface |
| ///////////////////////////////////////////////// |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // |
| // Function: EffectQueryNumberEffects |
| // |
| // Description: Returns the number of different effects in all loaded libraries. |
| // Each effect must have a different effect uuid (see |
| // effect_descriptor_t). This function together with EffectQueryEffect() |
| // is used to enumerate all effects present in all loaded libraries. |
| // Each time EffectQueryNumberEffects() is called, the factory must |
| // reset the index of the effect descriptor returned by next call to |
| // EffectQueryEffect() to restart enumeration from the beginning. |
| // |
| // Input/Output: |
| // pNumEffects: address where the number of effects should be returned. |
| // |
| // Output: |
| // returned value: 0 successful operation. |
| // -ENODEV factory failed to initialize |
| // -EINVAL invalid pNumEffects |
| // *pNumEffects: updated with number of effects in factory |
| // |
| //////////////////////////////////////////////////////////////////////////////// |
| ANDROID_API |
| int EffectQueryNumberEffects(uint32_t *pNumEffects); |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // |
| // Function: EffectQueryEffect |
| // |
| // Description: Returns a descriptor of the next available effect. |
| // See effect_descriptor_t for a details on effect descriptor. |
| // This function together with EffectQueryNumberEffects() is used to enumerate all |
| // effects present in all loaded libraries. The enumeration sequence is: |
| // EffectQueryNumberEffects(&num_effects); |
| // for (i = 0; i < num_effects; i++) |
| // EffectQueryEffect(i,...); |
| // |
| // Input/Output: |
| // pDescriptor: address where to return the effect descriptor. |
| // |
| // Output: |
| // returned value: 0 successful operation. |
| // -ENOENT no more effect available |
| // -ENODEV factory failed to initialize |
| // -EINVAL invalid pDescriptor |
| // -ENOSYS effect list has changed since last execution of |
| // EffectQueryNumberEffects() |
| // *pDescriptor: updated with the effect descriptor. |
| // |
| //////////////////////////////////////////////////////////////////////////////// |
| ANDROID_API |
| int EffectQueryEffect(uint32_t index, effect_descriptor_t *pDescriptor); |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // |
| // Function: EffectCreate |
| // |
| // Description: Creates an effect engine of the specified type and returns an |
| // effect control interface on this engine. The function will allocate the |
| // resources for an instance of the requested effect engine and return |
| // a handle on the effect control interface. |
| // |
| // Input: |
| // pEffectUuid: pointer to the effect uuid. |
| // sessionId: audio session to which this effect instance will be attached. All effects |
| // created with the same session ID are connected in series and process the same signal |
| // stream. Knowing that two effects are part of the same effect chain can help the |
| // library implement some kind of optimizations. |
| // ioId: identifies the output or input stream this effect is directed to at audio HAL. |
| // For future use especially with tunneled HW accelerated effects |
| // |
| // Input/Output: |
| // pHandle: address where to return the effect handle. |
| // |
| // Output: |
| // returned value: 0 successful operation. |
| // -ENODEV factory failed to initialize |
| // -EINVAL invalid pEffectUuid or pHandle |
| // -ENOENT no effect with this uuid found |
| // *pHandle: updated with the effect handle. |
| // |
| //////////////////////////////////////////////////////////////////////////////// |
| ANDROID_API |
| int EffectCreate(const effect_uuid_t *pEffectUuid, int32_t sessionId, int32_t ioId, |
| effect_handle_t *pHandle); |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // |
| // Function: EffectCreateOnDevice |
| // |
| // Description: Same as EffectCreate but uesed when creating an effect attached to a |
| // particular audio device instance |
| // |
| // Input: |
| // pEffectUuid: pointer to the effect uuid. |
| // deviceId: identifies the sink or source device this effect is directed to in |
| // audio HAL. Must be specified if sessionId is AUDIO_SESSION_DEVICE. |
| // deviceId is the audio_port_handle_t used for the device when the audio |
| // patch is created at the audio HAL.// |
| // ioId: identifies the output or input stream this effect is directed to at audio HAL. |
| // For future use especially with tunneled HW accelerated effects |
| // Input/Output: |
| // pHandle: address where to return the effect handle. |
| // |
| // Output: |
| // returned value: 0 successful operation. |
| // -ENODEV factory failed to initialize |
| // -EINVAL invalid pEffectUuid or pHandle |
| // -ENOENT no effect with this uuid found |
| // *pHandle: updated with the effect handle. |
| // |
| //////////////////////////////////////////////////////////////////////////////// |
| ANDROID_API |
| int EffectCreateOnDevice(const effect_uuid_t *pEffectUuid, int32_t deviceId, int32_t ioId, |
| effect_handle_t *pHandle); |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // |
| // Function: EffectRelease |
| // |
| // Description: Releases the effect engine whose handle is given as argument. |
| // All resources allocated to this particular instance of the effect are |
| // released. |
| // |
| // Input: |
| // handle: handle on the effect interface to be released. |
| // |
| // Output: |
| // returned value: 0 successful operation. |
| // -ENODEV factory failed to initialize |
| // -EINVAL invalid interface handle |
| // |
| //////////////////////////////////////////////////////////////////////////////// |
| ANDROID_API |
| int EffectRelease(effect_handle_t handle); |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // |
| // Function: EffectGetDescriptor |
| // |
| // Description: Returns the descriptor of the effect which uuid is pointed |
| // to by first argument. |
| // |
| // Input: |
| // pEffectUuid: pointer to the effect uuid. |
| // |
| // Input/Output: |
| // pDescriptor: address where to return the effect descriptor. |
| // |
| // Output: |
| // returned value: 0 successful operation. |
| // -ENODEV factory failed to initialize |
| // -EINVAL invalid pEffectUuid or pDescriptor |
| // -ENOENT no effect with this uuid found |
| // *pDescriptor: updated with the effect descriptor. |
| // |
| //////////////////////////////////////////////////////////////////////////////// |
| ANDROID_API |
| int EffectGetDescriptor(const effect_uuid_t *pEffectUuid, effect_descriptor_t *pDescriptor); |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // |
| // Function: EffectIsNullUuid |
| // |
| // Description: Helper function to compare effect uuid to EFFECT_UUID_NULL |
| // |
| // Input: |
| // pEffectUuid: pointer to effect uuid to compare to EFFECT_UUID_NULL. |
| // |
| // Output: |
| // returned value: 0 if uuid is different from EFFECT_UUID_NULL. |
| // 1 if uuid is equal to EFFECT_UUID_NULL. |
| // |
| //////////////////////////////////////////////////////////////////////////////// |
| ANDROID_API |
| int EffectIsNullUuid(const effect_uuid_t *pEffectUuid); |
| |
| ANDROID_API |
| int EffectDumpEffects(int fd); |
| |
| #if __cplusplus |
| } // extern "C" |
| #endif |
| |
| |
| #endif /*ANDROID_EFFECTSFACTORYAPI_H_*/ |