| /* |
| * Copyright (C) 2004-2010 NXP Software |
| * 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 __MIXER_H__ |
| #define __MIXER_H__ |
| |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif /* __cplusplus */ |
| |
| |
| #include "LVM_Types.h" |
| |
| /********************************************************************************** |
| INSTANCE MEMORY TYPE DEFINITION |
| ***********************************************************************************/ |
| |
| typedef struct |
| { |
| LVM_INT32 Alpha; /* Time constant. Set by calling application. Can be changed at any time */ |
| LVM_INT32 Target; /* Target value. Set by calling application. Can be changed at any time */ |
| LVM_INT32 Current; /* Current value. Set by the mixer function. */ |
| LVM_INT16 CallbackSet; /* Boolean. Should be set by calling application each time the target value is updated */ |
| LVM_INT16 CallbackParam; /* Parameter that will be used in the calback function */ |
| void *pCallbackHandle; /* Pointer to the instance of the callback function */ |
| void *pGeneralPurpose; /* Pointer for general purpose usage */ |
| LVM_Callback pCallBack; /* Pointer to the callback function */ |
| } Mix_1St_Cll_t; |
| |
| typedef struct |
| { |
| LVM_INT32 Alpha1; |
| LVM_INT32 Target1; |
| LVM_INT32 Current1; |
| LVM_INT16 CallbackSet1; |
| LVM_INT16 CallbackParam1; |
| void *pCallbackHandle1; |
| void *pGeneralPurpose1; |
| LVM_Callback pCallBack1; |
| |
| LVM_INT32 Alpha2; /* Warning the address of this location is passed as a pointer to Mix_1St_Cll_t in some functions */ |
| LVM_INT32 Target2; |
| LVM_INT32 Current2; |
| LVM_INT16 CallbackSet2; |
| LVM_INT16 CallbackParam2; |
| void *pCallbackHandle2; |
| void *pGeneralPurpose2; |
| LVM_Callback pCallBack2; |
| |
| } Mix_2St_Cll_t; |
| |
| |
| /*** General functions ************************************************************/ |
| |
| LVM_UINT32 LVM_Mixer_TimeConstant(LVM_UINT32 tc, |
| LVM_UINT16 Fs, |
| LVM_UINT16 NumChannels); |
| |
| |
| void MixSoft_1St_D32C31_WRA( Mix_1St_Cll_t *pInstance, |
| const LVM_INT32 *src, |
| LVM_INT32 *dst, |
| LVM_INT16 n); |
| |
| void MixSoft_2St_D32C31_SAT( Mix_2St_Cll_t *pInstance, |
| const LVM_INT32 *src1, |
| const LVM_INT32 *src2, |
| LVM_INT32 *dst, |
| LVM_INT16 n); |
| |
| void MixInSoft_D32C31_SAT( Mix_1St_Cll_t *pInstance, |
| const LVM_INT32 *src, |
| LVM_INT32 *dst, |
| LVM_INT16 n); |
| |
| /********************************************************************************** |
| FUNCTION PROTOTYPES (LOW LEVEL SUBFUNCTIONS) |
| ***********************************************************************************/ |
| |
| void Core_MixSoft_1St_D32C31_WRA( Mix_1St_Cll_t *pInstance, |
| const LVM_INT32 *src, |
| LVM_INT32 *dst, |
| LVM_INT16 n); |
| |
| void Core_MixHard_2St_D32C31_SAT( Mix_2St_Cll_t *pInstance, |
| const LVM_INT32 *src1, |
| const LVM_INT32 *src2, |
| LVM_INT32 *dst, |
| LVM_INT16 n); |
| |
| void Core_MixInSoft_D32C31_SAT( Mix_1St_Cll_t *pInstance, |
| const LVM_INT32 *src, |
| LVM_INT32 *dst, |
| LVM_INT16 n); |
| #ifdef __cplusplus |
| } |
| #endif /* __cplusplus */ |
| |
| |
| /**********************************************************************************/ |
| |
| #endif /* __MIXER_H__ */ |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |