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
22extern "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 */
44typedef 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
80LVCS_ReturnStatus_en LVCS_SEnhancerInit(LVCS_Handle_t        hInstance,
81                                        LVCS_Params_t        *pParams);
82
83#ifndef BUILD_FLOAT
84LVCS_ReturnStatus_en LVCS_StereoEnhancer(LVCS_Handle_t        hInstance,
85                                         const LVM_INT16    *pInData,
86                                         LVM_INT16            *pOutData,
87                                         LVM_UINT16            NumSamples);
88#else
89LVCS_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