222 lines
9.1 KiB
C
222 lines
9.1 KiB
C
|
/*
|
||
|
* 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 <errno.h>
|
||
|
#include <stdint.h>
|
||
|
#include <sys/types.h>
|
||
|
#include <media/EffectApi.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
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////////
|
||
|
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.
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////////
|
||
|
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 handler 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:
|
||
|
// pInterface: address where to return the effect interface.
|
||
|
//
|
||
|
// Output:
|
||
|
// returned value: 0 successful operation.
|
||
|
// -ENODEV factory failed to initialize
|
||
|
// -EINVAL invalid pEffectUuid or pInterface
|
||
|
// -ENOENT no effect with this uuid found
|
||
|
// *pInterface: updated with the effect interface.
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////////
|
||
|
int EffectCreate(effect_uuid_t *pEffectUuid, int32_t sessionId, int32_t ioId, effect_interface_t *pInterface);
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Function: EffectRelease
|
||
|
//
|
||
|
// Description: Releases the effect engine whose handler is given as argument.
|
||
|
// All resources allocated to this particular instance of the effect are
|
||
|
// released.
|
||
|
//
|
||
|
// Input:
|
||
|
// interface: handler on the effect interface to be released.
|
||
|
//
|
||
|
// Output:
|
||
|
// returned value: 0 successful operation.
|
||
|
// -ENODEV factory failed to initialize
|
||
|
// -EINVAL invalid interface handler
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////////
|
||
|
int EffectRelease(effect_interface_t interface);
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Function: EffectLoadLibrary
|
||
|
//
|
||
|
// Description: Loads the effect library which path is given as first argument.
|
||
|
// This must be the full path of a dynamic library (.so) implementing one or
|
||
|
// more effect engines and exposing the effect library interface described in
|
||
|
// EffectApi.h. The function returns a handle on the library for used by
|
||
|
// further call to EffectUnloadLibrary() to unload the library.
|
||
|
//
|
||
|
// Input:
|
||
|
// libPath: full path of the dynamic library file in the file system.
|
||
|
//
|
||
|
// handle: address where to return the library handle
|
||
|
//
|
||
|
// Output:
|
||
|
// returned value: 0 successful operation.
|
||
|
// -ENODEV effect factory not initialized or
|
||
|
// library could not be loaded or
|
||
|
// library does not implement required functions
|
||
|
// -EINVAL invalid libPath string or handle
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////////
|
||
|
int EffectLoadLibrary(const char *libPath, int *handle);
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Function: EffectUnloadLibrary
|
||
|
//
|
||
|
// Description: Unloads the effect library which handle is given as argument.
|
||
|
//
|
||
|
// Input:
|
||
|
// handle: library handle
|
||
|
//
|
||
|
// Output:
|
||
|
// returned value: 0 successful operation.
|
||
|
// -ENODEV effect factory not initialized
|
||
|
// -ENOENT invalid handle
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////////
|
||
|
int EffectUnloadLibrary(int 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.
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////////
|
||
|
int EffectGetDescriptor(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.
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////////
|
||
|
int EffectIsNullUuid(effect_uuid_t *pEffectUuid);
|
||
|
|
||
|
#if __cplusplus
|
||
|
} // extern "C"
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#endif /*ANDROID_EFFECTSFACTORYAPI_H_*/
|