Home | History | Annotate | Download | only in src
      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 __LVCS_STEREOENHANCER_H__
     19 #define __LVCS_STEREOENHANCER_H__
     20 
     21 #ifdef __cplusplus
     22 extern "C" {
     23 #endif /* __cplusplus */
     24 
     25 
     26 /************************************************************************************/
     27 /*                                                                                  */
     28 /*    Includes                                                                      */
     29 /*                                                                                  */
     30 /************************************************************************************/
     31 
     32 #include "Filters.h"                        /* Filter definitions */
     33 #include "LVCS_Headphone_Coeffs.h"          /* Headphone coefficients */
     34 #include "BIQUAD.h"
     35 
     36 
     37 /************************************************************************************/
     38 /*                                                                                  */
     39 /*    Structures                                                                    */
     40 /*                                                                                  */
     41 /************************************************************************************/
     42 
     43 /* Stereo enhancer structure */
     44 typedef struct
     45 {
     46 
     47 #ifndef BUILD_FLOAT
     48     /*
     49      * Middle filter
     50      */
     51     void                    (*pBiquadCallBack_Mid)(Biquad_Instance_t*, LVM_INT16*, LVM_INT16*, LVM_INT16);
     52     /*
     53      * Side filter
     54      */
     55     void                    (*pBiquadCallBack_Side)(Biquad_Instance_t*, LVM_INT16*, LVM_INT16*, LVM_INT16);
     56     LVM_UINT16              MidGain;            /* Middle gain in mobile speaker mode */
     57 #else
     58     /*
     59      * Middle filter
     60      */
     61     void                    (*pBiquadCallBack_Mid)(Biquad_FLOAT_Instance_t*,
     62                                     LVM_FLOAT*, LVM_FLOAT*, LVM_INT16);
     63 
     64     /*
     65      * Side filter
     66      */
     67     void                    (*pBiquadCallBack_Side)(Biquad_FLOAT_Instance_t*,
     68                                     LVM_FLOAT*, LVM_FLOAT*, LVM_INT16);
     69     LVM_FLOAT              MidGain;            /* Middle gain in mobile speaker mode */
     70 #endif
     71 } LVCS_StereoEnhancer_t;
     72 
     73 
     74 /************************************************************************************/
     75 /*                                                                                  */
     76 /*    Function prototypes                                                           */
     77 /*                                                                                  */
     78 /************************************************************************************/
     79 
     80 LVCS_ReturnStatus_en LVCS_SEnhancerInit(LVCS_Handle_t        hInstance,
     81                                         LVCS_Params_t        *pParams);
     82 
     83 #ifndef BUILD_FLOAT
     84 LVCS_ReturnStatus_en LVCS_StereoEnhancer(LVCS_Handle_t        hInstance,
     85                                          const LVM_INT16    *pInData,
     86                                          LVM_INT16            *pOutData,
     87                                          LVM_UINT16            NumSamples);
     88 #else
     89 LVCS_ReturnStatus_en LVCS_StereoEnhancer(LVCS_Handle_t        hInstance,
     90                                          const LVM_FLOAT    *pInData,
     91                                          LVM_FLOAT            *pOutData,
     92                                          LVM_UINT16            NumSamples);
     93 #endif
     94 #ifdef __cplusplus
     95 }
     96 #endif /* __cplusplus */
     97 
     98 #endif  /* STEREOENHANCE_H */
     99