Home | History | Annotate | Download | only in lib
      1 /*
      2  * Copyright (C) 2004-2010 NXP Software
      3  * Copyright (C) 2010 The Android Open Source Project
      4  *
      5  * Licensed under the Apache License, Version 2.0 (the "License");
      6  * you may not use this file except in compliance with the License.
      7  * You may obtain a copy of the License at
      8  *
      9  *      http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  * Unless required by applicable law or agreed to in writing, software
     12  * distributed under the License is distributed on an "AS IS" BASIS,
     13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  * See the License for the specific language governing permissions and
     15  * limitations under the License.
     16  */
     17 
     18 #ifndef __MIXER_H__
     19 #define __MIXER_H__
     20 
     21 
     22 #ifdef __cplusplus
     23 extern "C" {
     24 #endif /* __cplusplus */
     25 
     26 
     27 #include "LVM_Types.h"
     28 
     29 /**********************************************************************************
     30    INSTANCE MEMORY TYPE DEFINITION
     31 ***********************************************************************************/
     32 
     33 typedef struct
     34 {
     35     LVM_INT32   Alpha;                    /* Time constant. Set by calling application.  Can be changed at any time */
     36     LVM_INT32   Target;                   /* Target value.  Set by calling application.  Can be changed at any time */
     37     LVM_INT32   Current;                  /* Current value.  Set by the mixer function. */
     38     LVM_INT16   CallbackSet;              /* Boolean.  Should be set by calling application each time the target value is updated */
     39     LVM_INT16   CallbackParam;            /* Parameter that will be used in the calback function */
     40     void        *pCallbackHandle;         /* Pointer to the instance of the callback function */
     41     void        *pGeneralPurpose;         /* Pointer for general purpose usage */
     42     LVM_Callback pCallBack;               /* Pointer to the callback function */
     43 } Mix_1St_Cll_t;
     44 
     45 typedef struct
     46 {
     47     LVM_INT32   Alpha1;
     48     LVM_INT32   Target1;
     49     LVM_INT32   Current1;
     50     LVM_INT16   CallbackSet1;
     51     LVM_INT16   CallbackParam1;
     52     void        *pCallbackHandle1;
     53     void        *pGeneralPurpose1;
     54     LVM_Callback pCallBack1;
     55 
     56     LVM_INT32   Alpha2;                   /* Warning the address of this location is passed as a pointer to Mix_1St_Cll_t in some functions */
     57     LVM_INT32   Target2;
     58     LVM_INT32   Current2;
     59     LVM_INT16   CallbackSet2;
     60     LVM_INT16   CallbackParam2;
     61     void        *pCallbackHandle2;
     62     void        *pGeneralPurpose2;
     63     LVM_Callback pCallBack2;
     64 
     65 } Mix_2St_Cll_t;
     66 
     67 
     68 /*** General functions ************************************************************/
     69 
     70 LVM_UINT32 LVM_Mixer_TimeConstant(LVM_UINT32   tc,
     71                                   LVM_UINT16   Fs,
     72                                   LVM_UINT16   NumChannels);
     73 
     74 
     75 void MixSoft_1St_D32C31_WRA(    Mix_1St_Cll_t       *pInstance,
     76                                 const LVM_INT32     *src,
     77                                       LVM_INT32     *dst,
     78                                       LVM_INT16     n);
     79 
     80 void MixSoft_2St_D32C31_SAT(    Mix_2St_Cll_t       *pInstance,
     81                                 const LVM_INT32     *src1,
     82                                 const LVM_INT32     *src2,
     83                                       LVM_INT32     *dst,
     84                                       LVM_INT16     n);
     85 
     86 void MixInSoft_D32C31_SAT(      Mix_1St_Cll_t       *pInstance,
     87                                 const LVM_INT32     *src,
     88                                       LVM_INT32     *dst,
     89                                       LVM_INT16     n);
     90 
     91 /**********************************************************************************
     92    FUNCTION PROTOTYPES (LOW LEVEL SUBFUNCTIONS)
     93 ***********************************************************************************/
     94 
     95 void Core_MixSoft_1St_D32C31_WRA(   Mix_1St_Cll_t       *pInstance,
     96                                     const LVM_INT32     *src,
     97                                           LVM_INT32     *dst,
     98                                           LVM_INT16     n);
     99 
    100 void Core_MixHard_2St_D32C31_SAT(   Mix_2St_Cll_t       *pInstance,
    101                                     const LVM_INT32     *src1,
    102                                     const LVM_INT32     *src2,
    103                                           LVM_INT32     *dst,
    104                                           LVM_INT16     n);
    105 
    106 void Core_MixInSoft_D32C31_SAT(     Mix_1St_Cll_t       *pInstance,
    107                                     const LVM_INT32     *src,
    108                                           LVM_INT32     *dst,
    109                                           LVM_INT16     n);
    110 #ifdef __cplusplus
    111 }
    112 #endif /* __cplusplus */
    113 
    114 
    115 /**********************************************************************************/
    116 
    117 #endif /* __MIXER_H__ */
    118 
    119 
    120 
    121 
    122 
    123 
    124 
    125 
    126 
    127 
    128