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 _LVPSA_QPD_H_ 19 #define _LVPSA_QPD_H_ 20 21 #include "LVM_Types.h" 22 23 24 #ifdef __cplusplus 25 extern "C" { 26 #endif /* __cplusplus */ 27 28 typedef struct 29 { 30 LVM_INT32 *pDelay; /* pointer to the delayed samples (data of 32 bits) */ 31 LVM_INT32 Coefs[2]; /* pointer to the filter coefficients */ 32 }QPD_State_t, *pQPD_State_t; 33 34 typedef struct 35 { 36 LVM_INT32 KP; /*should store a0*/ 37 LVM_INT32 KM; /*should store b2*/ 38 39 } QPD_C32_Coefs, *PQPD_C32_Coefs; 40 41 typedef struct 42 { 43 LVM_INT32 Storage[1]; 44 45 } QPD_Taps_t, *pQPD_Taps_t; 46 47 /************************************************************************************/ 48 /* */ 49 /* FUNCTION: LVPSA_QPD_Process */ 50 /* */ 51 /* DESCRIPTION: */ 52 /* Apply downsampling, post gain, quasi peak filtering and write the levels values */ 53 /* in the buffer every 20 ms. */ 54 /* */ 55 /* PARAMETERS: */ 56 /* */ 57 /* RETURNS: void */ 58 /* */ 59 /************************************************************************************/ 60 void LVPSA_QPD_Process ( void *hInstance, 61 LVM_INT16 *pInSamps, 62 LVM_INT16 numSamples, 63 LVM_INT16 BandIndex); 64 65 /************************************************************************************/ 66 /* */ 67 /* FUNCTION: LVPSA_QPD_Init */ 68 /* */ 69 /* DESCRIPTION: */ 70 /* Initialize a quasi peak filter instance. */ 71 /* */ 72 /* PARAMETERS: */ 73 /* pInstance Pointer to the instance */ 74 /* pTaps Pointer to the filter's taps */ 75 /* pCoef Pointer to the filter's coefficients */ 76 /* */ 77 /* RETURNS: void */ 78 /* */ 79 /************************************************************************************/ 80 void LVPSA_QPD_Init ( QPD_State_t *pInstance, 81 QPD_Taps_t *pTaps, 82 QPD_C32_Coefs *pCoef ); 83 84 85 #ifdef __cplusplus 86 } 87 #endif /* __cplusplus */ 88 89 #endif 90 91