LVEQNB_Private.h revision 2c8e5cab3faa6d360e222b7a6c40a80083d021ac
1e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/* 2e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Copyright (C) 2004-2010 NXP Software 3e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Copyright (C) 2010 The Android Open Source Project 4e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * 5e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Licensed under the Apache License, Version 2.0 (the "License"); 6e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * you may not use this file except in compliance with the License. 7e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * You may obtain a copy of the License at 8e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * 9e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * http://www.apache.org/licenses/LICENSE-2.0 10e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * 11e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Unless required by applicable law or agreed to in writing, software 12e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * distributed under the License is distributed on an "AS IS" BASIS, 13e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * See the License for the specific language governing permissions and 15e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * limitations under the License. 16e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */ 17e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian 18e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/********************************************************************************** 19e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian 20e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian $Author: beq07716 $ 21e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian $Revision: 1005 $ 22e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian $Date: 2010-06-28 13:58:28 +0200 (Mon, 28 Jun 2010) $ 23e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian 24e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian***********************************************************************************/ 25e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian 26e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#ifndef __LVEQNB_PRIVATE_H__ 27e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#define __LVEQNB_PRIVATE_H__ 28e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian 29e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#ifdef __cplusplus 30e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianextern "C" { 31e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#endif /* __cplusplus */ 32e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian 33e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian 34e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/****************************************************************************************/ 35e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/* */ 36e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/* Includes */ 37e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/* */ 38e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/****************************************************************************************/ 39e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian 40e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#include "LVEQNB.h" /* Calling or Application layer definitions */ 41e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#include "BIQUAD.h" 42e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#include "LVC_Mixer.h" 43e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian 44e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/****************************************************************************************/ 45e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/* */ 46e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/* Defines */ 47e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/* */ 48e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/****************************************************************************************/ 49e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian 50e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/* General */ 51e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#define LVEQNB_INVALID 0xFFFF /* Invalid init parameter */ 52e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian 53e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/* Memory */ 54e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#define LVEQNB_INSTANCE_ALIGN 4 /* 32-bit alignment for instance structures */ 55e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#define LVEQNB_DATA_ALIGN 4 /* 32-bit alignment for structures */ 56e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#define LVEQNB_COEF_ALIGN 4 /* 32-bit alignment for long words */ 57e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#define LVEQNB_SCRATCHBUFFERS 4 /* Number of buffers required for inplace processing */ 58e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#define LVEQNB_SCRATCH_ALIGN 4 /* 32-bit alignment for long data */ 59e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian 60e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#define LVEQNB_BYPASS_MIXER_TC 100 /* Bypass Mixer TC */ 61e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian 62e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/****************************************************************************************/ 63e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/* */ 64/* Types */ 65/* */ 66/****************************************************************************************/ 67 68/* Filter biquad types */ 69typedef enum 70{ 71 LVEQNB_SinglePrecision = 0, 72 LVEQNB_DoublePrecision = 1, 73 LVEQNB_OutOfRange = 2, 74 LVEQNB_BIQUADTYPE_MAX = LVM_MAXINT_32 75} LVEQNB_BiquadType_en; 76 77 78/****************************************************************************************/ 79/* */ 80/* Structures */ 81/* */ 82/****************************************************************************************/ 83 84 85 86/* Instance structure */ 87typedef struct 88{ 89 /* Public parameters */ 90 LVEQNB_MemTab_t MemoryTable; /* Instance memory allocation table */ 91 LVEQNB_Params_t Params; /* Instance parameters */ 92 LVEQNB_Capabilities_t Capabilities; /* Instance capabilities */ 93 94 /* Aligned memory pointers */ 95 LVM_INT16 *pFastTemporary; /* Fast temporary data base address */ 96 97 /* Process variables */ 98 Biquad_2I_Order2_Taps_t *pEQNB_Taps; /* Equaliser Taps */ 99 Biquad_Instance_t *pEQNB_FilterState; /* State for each filter band */ 100 101 /* Filter definitions and call back */ 102 LVM_UINT16 NBands; /* Number of bands */ 103 LVEQNB_BandDef_t *pBandDefinitions; /* Filter band definitions */ 104 LVEQNB_BiquadType_en *pBiquadType; /* Filter biquad types */ 105 106 /* Bypass variable */ 107 LVMixer3_2St_st BypassMixer; /* Bypass mixer used in transitions */ 108 LVM_INT16 bInOperatingModeTransition; /* Operating mode transition flag */ 109 110} LVEQNB_Instance_t; 111 112 113/****************************************************************************************/ 114/* */ 115/* Function prototypes */ 116/* */ 117/****************************************************************************************/ 118 119void LVEQNB_SetFilters(LVEQNB_Instance_t *pInstance, 120 LVEQNB_Params_t *pParams); 121 122void LVEQNB_SetCoefficients(LVEQNB_Instance_t *pInstance); 123 124void LVEQNB_ClearFilterHistory(LVEQNB_Instance_t *pInstance); 125 126LVEQNB_ReturnStatus_en LVEQNB_SinglePrecCoefs(LVM_UINT16 Fs, 127 LVEQNB_BandDef_t *pFilterDefinition, 128 PK_C16_Coefs_t *pCoefficients); 129 130LVEQNB_ReturnStatus_en LVEQNB_DoublePrecCoefs(LVM_UINT16 Fs, 131 LVEQNB_BandDef_t *pFilterDefinition, 132 PK_C32_Coefs_t *pCoefficients); 133 134LVM_INT32 LVEQNB_BypassMixerCallBack (void* hInstance, void *pGeneralPurpose, LVM_INT16 CallbackParam); 135 136#ifdef __cplusplus 137} 138#endif /* __cplusplus */ 139 140#endif /* __LVEQNB_PRIVATE_H__ */ 141 142