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
22extern "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 */
53typedef struct
54{
55
56    /* Stereo delay */
57    LVM_INT16                   DelaySize;
58    LVM_INT16                   DelayOffset;
59    LVM_INT16                   ProcGain;
60    LVM_INT16                   UnprocGain;
61    LVM_INT16                    StereoSamples[2*LVCS_STEREODELAY_CS_48KHZ];
62
63    /* Reverb Level */
64    LVM_INT16                   ReverbLevel;
65
66    /* Filter */
67    void                        (*pBiquadCallBack) (Biquad_Instance_t*, LVM_INT16*, LVM_INT16*, LVM_INT16);
68
69} LVCS_ReverbGenerator_t;
70
71
72/************************************************************************************/
73/*                                                                                    */
74/*    Function prototypes                                                                */
75/*                                                                                    */
76/************************************************************************************/
77
78LVCS_ReturnStatus_en LVCS_ReverbGeneratorInit(LVCS_Handle_t     hInstance,
79                                                 LVCS_Params_t  *pParams);
80
81LVCS_ReturnStatus_en LVCS_ReverbGenerator(LVCS_Handle_t         hInstance,
82                                          const LVM_INT16       *pInput,
83                                          LVM_INT16             *pOutput,
84                                          LVM_UINT16            NumSamples);
85
86#ifdef __cplusplus
87}
88#endif /* __cplusplus */
89
90#endif  /* REVERB_H */
91