12c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* 22c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Copyright (C) 2004-2010 NXP Software 32c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Copyright (C) 2010 The Android Open Source Project 42c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * 52c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Licensed under the Apache License, Version 2.0 (the "License"); 62c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * you may not use this file except in compliance with the License. 72c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * You may obtain a copy of the License at 82c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * 92c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * http://www.apache.org/licenses/LICENSE-2.0 102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * 112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Unless required by applicable law or agreed to in writing, software 122c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * distributed under the License is distributed on an "AS IS" BASIS, 132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * See the License for the specific language governing permissions and 152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * limitations under the License. 162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent */ 172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifndef _LVPSA_QPD_H_ 192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define _LVPSA_QPD_H_ 202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "LVM_Types.h" 222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifdef __cplusplus 252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentextern "C" { 262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /* __cplusplus */ 272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct 292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT32 *pDelay; /* pointer to the delayed samples (data of 32 bits) */ 312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT32 Coefs[2]; /* pointer to the filter coefficients */ 322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent}QPD_State_t, *pQPD_State_t; 332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 342c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct 352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT32 KP; /*should store a0*/ 372c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT32 KM; /*should store b2*/ 382c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} QPD_C32_Coefs, *PQPD_C32_Coefs; 402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct 422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT32 Storage[1]; 442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 452c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} QPD_Taps_t, *pQPD_Taps_t; 462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* FUNCTION: LVPSA_QPD_Process */ 502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* DESCRIPTION: */ 522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Apply downsampling, post gain, quasi peak filtering and write the levels values */ 532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* in the buffer every 20 ms. */ 542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* PARAMETERS: */ 562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* RETURNS: void */ 582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid LVPSA_QPD_Process ( void *hInstance, 612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 *pInSamps, 622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 numSamples, 632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 BandIndex); 642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* FUNCTION: LVPSA_QPD_Init */ 682c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* DESCRIPTION: */ 702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Initialize a quasi peak filter instance. */ 712c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 722c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* PARAMETERS: */ 732c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* pInstance Pointer to the instance */ 742c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* pTaps Pointer to the filter's taps */ 752c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* pCoef Pointer to the filter's coefficients */ 762c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* RETURNS: void */ 782c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid LVPSA_QPD_Init ( QPD_State_t *pInstance, 812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent QPD_Taps_t *pTaps, 822c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent QPD_C32_Coefs *pCoef ); 832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 842c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 852c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifdef __cplusplus 862c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} 872c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /* __cplusplus */ 882c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 892c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif 902c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 91