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_REVERBGENERATOR_H__
     19 #define __LVCS_REVERBGENERATOR_H__
     20 
     21 #ifdef __cplusplus
     22 extern "C" {
     23 #endif /* __cplusplus */
     24 
     25 
     26 /************************************************************************************/
     27 /*                                                                                  */
     28 /*    Includes                                                                      */
     29 /*                                                                                  */
     30 /************************************************************************************/
     31 
     32 #include "LVC_Mixer.h"
     33 
     34 
     35 /************************************************************************************/
     36 /*                                                                                  */
     37 /*    Defines                                                                       */
     38 /*                                                                                  */
     39 /************************************************************************************/
     40 
     41 #define     HEADPHONEGAINPROC           LVCS_HEADPHONE_PROCGAIN
     42 #define     HEADPHONEGAINUNPROC         LVCS_HEADPHONE_UNPROCGAIN
     43 
     44 
     45 /************************************************************************************/
     46 /*                                                                                  */
     47 /*    Structures                                                                    */
     48 /*                                                                                  */
     49 /************************************************************************************/
     50 
     51 
     52 /* Reverberation module structure */
     53 typedef struct
     54 {
     55 
     56     /* Stereo delay */
     57     LVM_INT16                   DelaySize;
     58     LVM_INT16                   DelayOffset;
     59     LVM_INT16                   ProcGain;
     60     LVM_INT16                   UnprocGain;
     61 #ifndef BUILD_FLOAT
     62     LVM_INT16                    StereoSamples[2*LVCS_STEREODELAY_CS_48KHZ];
     63     /* Reverb Level */
     64     LVM_INT16                   ReverbLevel;
     65     /* Filter */
     66     void                        (*pBiquadCallBack) (Biquad_Instance_t*, LVM_INT16*, LVM_INT16*, LVM_INT16);
     67 #else
     68     LVM_FLOAT                   StereoSamples[2 * LVCS_STEREODELAY_CS_MAX_VAL];
     69     /* Reverb Level */
     70     LVM_FLOAT                   ReverbLevel;
     71     /* Filter */
     72     void                        (*pBiquadCallBack) (Biquad_FLOAT_Instance_t*,
     73                                                     LVM_FLOAT*, LVM_FLOAT*, LVM_INT16);
     74 #endif
     75 } LVCS_ReverbGenerator_t;
     76 
     77 
     78 /************************************************************************************/
     79 /*                                                                                    */
     80 /*    Function prototypes                                                                */
     81 /*                                                                                    */
     82 /************************************************************************************/
     83 
     84 LVCS_ReturnStatus_en LVCS_ReverbGeneratorInit(LVCS_Handle_t     hInstance,
     85                                                  LVCS_Params_t  *pParams);
     86 #ifdef BUILD_FLOAT
     87 LVCS_ReturnStatus_en LVCS_ReverbGenerator(LVCS_Handle_t         hInstance,
     88                                           const LVM_FLOAT       *pInput,
     89                                           LVM_FLOAT             *pOutput,
     90                                           LVM_UINT16            NumSamples);
     91 #else
     92 LVCS_ReturnStatus_en LVCS_ReverbGenerator(LVCS_Handle_t         hInstance,
     93                                           const LVM_INT16       *pInput,
     94                                           LVM_INT16             *pOutput,
     95                                           LVM_UINT16            NumSamples);
     96 #endif
     97 #ifdef __cplusplus
     98 }
     99 #endif /* __cplusplus */
    100 
    101 #endif  /* REVERB_H */
    102