| /* |
| * Copyright (C) 2004-2010 NXP Software |
| * Copyright (C) 2010 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef _LVPSA_QPD_H_ |
| #define _LVPSA_QPD_H_ |
| |
| #include "LVM_Types.h" |
| |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif /* __cplusplus */ |
| |
| typedef struct |
| { |
| LVM_INT32 *pDelay; /* pointer to the delayed samples (data of 32 bits) */ |
| LVM_INT32 Coefs[2]; /* pointer to the filter coefficients */ |
| }QPD_State_t, *pQPD_State_t; |
| |
| #ifdef BUILD_FLOAT |
| typedef struct |
| { |
| /* pointer to the delayed samples (data of 32 bits) */ |
| LVM_FLOAT *pDelay; |
| LVM_FLOAT Coefs[2]; /* pointer to the filter coefficients */ |
| }QPD_FLOAT_State_t, *pQPD_FLOAT_State_t; |
| #endif |
| |
| typedef struct |
| { |
| LVM_INT32 KP; /*should store a0*/ |
| LVM_INT32 KM; /*should store b2*/ |
| |
| } QPD_C32_Coefs, *PQPD_C32_Coefs; |
| |
| #ifdef BUILD_FLOAT |
| typedef struct |
| { |
| LVM_FLOAT KP; /*should store a0*/ |
| LVM_FLOAT KM; /*should store b2*/ |
| |
| } QPD_FLOAT_Coefs, *PQPD_FLOAT_Coefs; |
| #endif |
| |
| |
| typedef struct |
| { |
| LVM_INT32 Storage[1]; |
| |
| } QPD_Taps_t, *pQPD_Taps_t; |
| |
| #ifdef BUILD_FLOAT |
| typedef struct |
| { |
| LVM_FLOAT Storage[1]; |
| |
| } QPD_FLOAT_Taps_t, *pQPD_FLOAT_Taps_t; |
| |
| #endif |
| /************************************************************************************/ |
| /* */ |
| /* FUNCTION: LVPSA_QPD_Process */ |
| /* */ |
| /* DESCRIPTION: */ |
| /* Apply downsampling, post gain, quasi peak filtering and write the levels values */ |
| /* in the buffer every 20 ms. */ |
| /* */ |
| /* PARAMETERS: */ |
| /* */ |
| /* RETURNS: void */ |
| /* */ |
| /************************************************************************************/ |
| void LVPSA_QPD_Process ( void *hInstance, |
| LVM_INT16 *pInSamps, |
| LVM_INT16 numSamples, |
| LVM_INT16 BandIndex); |
| |
| #ifdef BUILD_FLOAT |
| void LVPSA_QPD_Process_Float ( void *hInstance, |
| LVM_FLOAT *pInSamps, |
| LVM_INT16 numSamples, |
| LVM_INT16 BandIndex); |
| #endif |
| /************************************************************************************/ |
| /* */ |
| /* FUNCTION: LVPSA_QPD_Init */ |
| /* */ |
| /* DESCRIPTION: */ |
| /* Initialize a quasi peak filter instance. */ |
| /* */ |
| /* PARAMETERS: */ |
| /* pInstance Pointer to the instance */ |
| /* pTaps Pointer to the filter's taps */ |
| /* pCoef Pointer to the filter's coefficients */ |
| /* */ |
| /* RETURNS: void */ |
| /* */ |
| /************************************************************************************/ |
| void LVPSA_QPD_Init ( QPD_State_t *pInstance, |
| QPD_Taps_t *pTaps, |
| QPD_C32_Coefs *pCoef ); |
| #ifdef BUILD_FLOAT |
| |
| void LVPSA_QPD_Init_Float ( QPD_FLOAT_State_t *pInstance, |
| QPD_FLOAT_Taps_t *pTaps, |
| QPD_FLOAT_Coefs *pCoef ); |
| #endif |
| #ifdef __cplusplus |
| } |
| #endif /* __cplusplus */ |
| |
| #endif |
| |