1bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/*
2bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber * Copyright (C) 2004-2010 NXP Software
3bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber * Copyright (C) 2010 The Android Open Source Project
4bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber *
5bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
6bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber * you may not use this file except in compliance with the License.
7bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber * You may obtain a copy of the License at
8bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber *
9bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
10bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber *
11bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber * Unless required by applicable law or agreed to in writing, software
12bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
13bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber * See the License for the specific language governing permissions and
15bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber * limitations under the License.
16bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber */
17bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
18bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/****************************************************************************************/
19bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/*                                                                                      */
20bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/*    Header file for the private layer interface of Dynamic Bass Enhancement module    */
21bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/*                                                                                      */
22bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/*  This files includes all definitions, types, structures and function                 */
23bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/*  prototypes required by the execution layer.                                         */
24bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/*                                                                                      */
25bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/****************************************************************************************/
26bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
27bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber#ifndef __LVDBE_PRIVATE_H__
28bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber#define __LVDBE_PRIVATE_H__
2966b0a35c9a4136a84c3f73b1b25fcb5220138b95Andreas Huber
30bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber#ifdef __cplusplus
31bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huberextern "C" {
32bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber#endif /* __cplusplus */
3366b0a35c9a4136a84c3f73b1b25fcb5220138b95Andreas Huber
34bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
35bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/****************************************************************************************/
36733b7729ea462fae9c6899456444e28fef1c757cAndreas Huber/*                                                                                      */
37733b7729ea462fae9c6899456444e28fef1c757cAndreas Huber/*    Includes                                                                          */
38733b7729ea462fae9c6899456444e28fef1c757cAndreas Huber/*                                                                                      */
39733b7729ea462fae9c6899456444e28fef1c757cAndreas Huber/****************************************************************************************/
40733b7729ea462fae9c6899456444e28fef1c757cAndreas Huber
41733b7729ea462fae9c6899456444e28fef1c757cAndreas Huber#include "LVDBE.h"                                /* Calling or Application layer definitions */
42733b7729ea462fae9c6899456444e28fef1c757cAndreas Huber#include "BIQUAD.h"
43733b7729ea462fae9c6899456444e28fef1c757cAndreas Huber#include "LVC_Mixer.h"
44733b7729ea462fae9c6899456444e28fef1c757cAndreas Huber#include "AGC.h"
45733b7729ea462fae9c6899456444e28fef1c757cAndreas Huber
46bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
47bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/****************************************************************************************/
48bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/*                                                                                      */
49bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/*    Defines                                                                           */
500726045216f576e97672ebeefc265d39c4ebaaa5Andreas Huber/*                                                                                      */
51bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/****************************************************************************************/
525561ccf4a8db88a2e44eac1b3ed13b4ff53a7f20Andreas Huber
535561ccf4a8db88a2e44eac1b3ed13b4ff53a7f20Andreas Huber/* General */
545561ccf4a8db88a2e44eac1b3ed13b4ff53a7f20Andreas Huber#define    LVDBE_INVALID            0xFFFF        /* Invalid init parameter */
555561ccf4a8db88a2e44eac1b3ed13b4ff53a7f20Andreas Huber
56bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/* Memory */
57bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber#define LVDBE_MEMREGION_INSTANCE         0       /* Offset to the instance memory region */
58bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber#define LVDBE_MEMREGION_PERSISTENT_DATA  1       /* Offset to persistent data memory region */
59bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber#define LVDBE_MEMREGION_PERSISTENT_COEF  2       /* Offset to persistent coefficient region */
60bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber#define LVDBE_MEMREGION_SCRATCH          3       /* Offset to data scratch memory region */
61bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
62bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber#define LVDBE_INSTANCE_ALIGN             4       /* 32-bit alignment for structures */
63bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber#define LVDBE_PERSISTENT_DATA_ALIGN      4       /* 32-bit alignment for data */
64bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber#define LVDBE_PERSISTENT_COEF_ALIGN      4       /* 32-bit alignment for coef */
65bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber#define LVDBE_SCRATCH_ALIGN              4       /* 32-bit alignment for long data */
66bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
67bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber#define LVDBE_SCRATCHBUFFERS_INPLACE     6       /* Number of buffers required for inplace processing */
68bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
69bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber#define LVDBE_MIXER_TC                   5       /* Mixer time  */
70bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber#define LVDBE_BYPASS_MIXER_TC            100     /* Bypass mixer time */
71bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
72bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
73bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/****************************************************************************************/
74bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/*                                                                                      */
75bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/*    Structures                                                                        */
76bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/*                                                                                      */
77bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/****************************************************************************************/
78bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
79bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/* Data structure */
80bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Hubertypedef struct
81bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber{
82bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber    /* AGC parameters */
83bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber    AGC_MIX_VOL_2St1Mon_D32_t   AGCInstance;        /* AGC instance parameters */
84bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
85bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber    /* Process variables */
86bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber    Biquad_2I_Order2_Taps_t     HPFTaps;            /* High pass filter taps */
87bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber    Biquad_1I_Order2_Taps_t     BPFTaps;            /* Band pass filter taps */
88bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber    LVMixer3_1St_st             BypassVolume;       /* Bypass volume scaler */
890726045216f576e97672ebeefc265d39c4ebaaa5Andreas Huber    LVMixer3_2St_st             BypassMixer;        /* Bypass Mixer for Click Removal */
90bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
91bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber} LVDBE_Data_t;
92bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
93bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/* Coefs structure */
94bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Hubertypedef struct
95bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber{
96bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber    /* Process variables */
97733b7729ea462fae9c6899456444e28fef1c757cAndreas Huber    Biquad_Instance_t           HPFInstance;        /* High pass filter instance */
98bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber    Biquad_Instance_t           BPFInstance;        /* Band pass filter instance */
99bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
100bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber} LVDBE_Coef_t;
101bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
102bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/* Instance structure */
103bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Hubertypedef struct
104bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber{
105bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber    /* Public parameters */
106bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber    LVDBE_MemTab_t                MemoryTable;        /* Instance memory allocation table */
107bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber    LVDBE_Params_t                Params;             /* Instance parameters */
108bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber    LVDBE_Capabilities_t        Capabilities;         /* Instance capabilities */
109bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
110bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber    /* Data and coefficient pointers */
111bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber    LVDBE_Data_t                *pData;                /* Instance data */
112bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber    LVDBE_Coef_t                *pCoef;                /* Instance coefficients */
113bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber} LVDBE_Instance_t;
114bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
115bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
11666b0a35c9a4136a84c3f73b1b25fcb5220138b95Andreas Huber/****************************************************************************************/
11766b0a35c9a4136a84c3f73b1b25fcb5220138b95Andreas Huber/*                                                                                      */
118bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/* Function prototypes                                                                  */
119bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber/*                                                                                      */
12066b0a35c9a4136a84c3f73b1b25fcb5220138b95Andreas Huber/****************************************************************************************/
121bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
122bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Hubervoid    LVDBE_SetAGC(LVDBE_Instance_t       *pInstance,
123bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber                     LVDBE_Params_t         *pParams);
124bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
125bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
12666b0a35c9a4136a84c3f73b1b25fcb5220138b95Andreas Hubervoid    LVDBE_SetVolume(LVDBE_Instance_t    *pInstance,
12766b0a35c9a4136a84c3f73b1b25fcb5220138b95Andreas Huber                        LVDBE_Params_t      *pParams);
128bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
129bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
130bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Hubervoid    LVDBE_SetFilters(LVDBE_Instance_t   *pInstance,
131bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber                         LVDBE_Params_t     *pParams);
132bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
133bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
134bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber#ifdef __cplusplus
13566b0a35c9a4136a84c3f73b1b25fcb5220138b95Andreas Huber}
136bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber#endif /* __cplusplus */
13766b0a35c9a4136a84c3f73b1b25fcb5220138b95Andreas Huber
13866b0a35c9a4136a84c3f73b1b25fcb5220138b95Andreas Huber#endif      /* __LVDBE_PRIVATE_H__ */
139bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
140bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber
141bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber