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/************************************************************************************/ 192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Header file for the private layer interface of concert sound bundle */ 212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* This files includes all definitions, types, structures and function */ 232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* prototypes required by the execution layer. */ 242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifndef __LVM_PRIVATE_H__ 282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define __LVM_PRIVATE_H__ 292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifdef __cplusplus 312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentextern "C" { 322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /* __cplusplus */ 332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 342c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 372c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Includes */ 382c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "LVM.h" /* LifeVibes */ 422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "LVM_Common.h" /* LifeVibes common */ 432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "BIQUAD.h" /* Biquad library */ 442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "LVC_Mixer.h" /* Mixer library */ 452c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "LVCS_Private.h" /* Concert Sound */ 462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "LVDBE_Private.h" /* Dynamic Bass Enhancement */ 472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "LVEQNB_Private.h" /* N-Band equaliser */ 482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "LVPSA_Private.h" /* Parametric Spectrum Analyzer */ 492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Defines */ 542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* General */ 582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_INVALID 0xFFFF /* Invalid init parameter */ 592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Memory */ 612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_INSTANCE_ALIGN 4 /* 32-bit for structures */ 622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_FIRSTCALL 0 /* First call to the buffer */ 632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_MAXBLOCKCALL 1 /* Maximum block size calls to the buffer */ 642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_LASTCALL 2 /* Last call to the buffer */ 652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_FIRSTLASTCALL 3 /* Single call for small number of samples */ 662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Block Size */ 682c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_MIN_MAXBLOCKSIZE 16 /* Minimum MaxBlockSize Limit*/ 692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_MANAGED_MAX_MAXBLOCKSIZE 8191 /* Maximum MaxBlockSzie Limit for Managed Buffer Mode*/ 702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_UNMANAGED_MAX_MAXBLOCKSIZE 4096 /* Maximum MaxBlockSzie Limit for Unmanaged Buffer Mode */ 712c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 722c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define MAX_INTERNAL_BLOCKSIZE 8128 /* Maximum multiple of 64 below 8191*/ 732c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 742c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define MIN_INTERNAL_BLOCKSIZE 16 /* Minimum internal block size */ 752c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define MIN_INTERNAL_BLOCKSHIFT 4 /* Minimum internal block size as a power of 2 */ 762c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define MIN_INTERNAL_BLOCKMASK 0xFFF0 /* Minimum internal block size mask */ 772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 782c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_PSA_DYNAMICRANGE 60 /* Spectral Dynamic range: used for offseting output*/ 792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_PSA_BARHEIGHT 127 /* Spectral Bar Height*/ 802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_TE_MIN_EFFECTLEVEL 0 /*TE Minimum EffectLevel*/ 822c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_TE_MAX_EFFECTLEVEL 15 /*TE Maximum Effect level*/ 832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 842c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_VC_MIN_EFFECTLEVEL -96 /*VC Minimum EffectLevel*/ 852c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_VC_MAX_EFFECTLEVEL 0 /*VC Maximum Effect level*/ 862c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 872c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_BE_MIN_EFFECTLEVEL 0 /*BE Minimum EffectLevel*/ 882c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_BE_MAX_EFFECTLEVEL 15 /*BE Maximum Effect level*/ 892c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 902c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_EQNB_MIN_BAND_FREQ 20 /*EQNB Minimum Band Frequency*/ 912c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_EQNB_MAX_BAND_FREQ 24000 /*EQNB Maximum Band Frequency*/ 922c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_EQNB_MIN_BAND_GAIN -15 /*EQNB Minimum Band Frequency*/ 932c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_EQNB_MAX_BAND_GAIN 15 /*EQNB Maximum Band Frequency*/ 942c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_EQNB_MIN_QFACTOR 25 /*EQNB Minimum Q Factor*/ 952c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_EQNB_MAX_QFACTOR 1200 /*EQNB Maximum Q Factor*/ 962c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_EQNB_MIN_LPF_FREQ 1000 /*EQNB Minimum Low Pass Corner frequency*/ 972c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_EQNB_MIN_HPF_FREQ 20 /*EQNB Minimum High Pass Corner frequency*/ 982c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_EQNB_MAX_HPF_FREQ 1000 /*EQNB Maximum High Pass Corner frequency*/ 992c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1002c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_CS_MIN_EFFECT_LEVEL 0 /*CS Minimum Effect Level*/ 1012c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_CS_MAX_REVERB_LEVEL 100 /*CS Maximum Reverb Level*/ 1022c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_VIRTUALIZER_MAX_REVERB_LEVEL 100 /*Vitrualizer Maximum Reverb Level*/ 1032c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1042c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_VC_MIXER_TIME 100 /*VC mixer time*/ 1052c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_VC_BALANCE_MAX 96 /*VC balance max value*/ 1062c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_VC_BALANCE_MIN -96 /*VC balance min value*/ 1072c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1082c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Algorithm masks */ 1092c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_CS_MASK 1 1102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_EQNB_MASK 2 1112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_DBE_MASK 4 1122c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_VC_MASK 16 1132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_TE_MASK 32 1142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVM_PSA_MASK 2048 1152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 1182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 1192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Structures */ 1202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 1212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 1222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Memory region definition */ 1242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct 1252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 1262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_UINT32 Size; /* Region size in bytes */ 1272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_UINT16 Alignment; /* Byte alignment */ 1282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_MemoryTypes_en Type; /* Region type */ 1292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent void *pBaseAddress; /* Pointer to the region base address */ 1302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVM_IntMemoryRegion_t; 1312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Memory table containing the region definitions */ 1342c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct 1352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 1362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_IntMemoryRegion_t Region[LVM_NR_MEMORY_REGIONS]; /* One definition for each region */ 1372c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVM_IntMemTab_t; 1382c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Buffer Management */ 1412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct 1422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 1432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 *pScratch; /* Bundle scratch buffer */ 1442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1452c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 BufferState; /* Buffer status */ 1462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 InDelayBuffer[6*MIN_INTERNAL_BLOCKSIZE]; /* Input buffer delay line, left and right */ 1472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 InDelaySamples; /* Number of samples in the input delay buffer */ 1482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 OutDelayBuffer[2*MIN_INTERNAL_BLOCKSIZE]; /* Output buffer delay line */ 1502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 OutDelaySamples; /* Number of samples in the output delay buffer, left and right */ 1512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 SamplesToOutput; /* Samples to write to the output */ 1522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVM_Buffer_t; 1532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Filter taps */ 1562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct 1572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 1582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Biquad_2I_Order1_Taps_t TrebleBoost_Taps; /* Treble boost Taps */ 1592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVM_TE_Data_t; 1602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Coefficients */ 1632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct 1642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 1652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Biquad_Instance_t TrebleBoost_State; /* State for the treble boost filter */ 1662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVM_TE_Coefs_t; 1672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1682c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct 1702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 1712c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent /* Public parameters */ 1722c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_MemTab_t MemoryTable; /* Instance memory allocation table */ 1732c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_ControlParams_t Params; /* Control parameters */ 1742c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_InstParams_t InstParams; /* Instance parameters */ 1752c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1762c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent /* Private parameters */ 1772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_UINT16 ControlPending; /* Control flag to indicate update pending */ 1782c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_ControlParams_t NewParams; /* New control parameters pending update */ 1792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent /* Buffer control */ 1812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 InternalBlockSize; /* Maximum internal block size */ 1822c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_Buffer_t *pBufferManagement; /* Buffer management variables */ 1832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 SamplesToProcess; /* Input samples left to process */ 1842c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 *pInputSamples; /* External input sample pointer */ 1852c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 *pOutputSamples; /* External output sample pointer */ 1862c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1872c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent /* Configuration number */ 1882c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT32 ConfigurationNumber; 1892c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT32 BlickSizeMultiple; 1902c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1912c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent /* DC removal */ 1922c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Biquad_Instance_t DC_RemovalInstance; /* DC removal filter instance */ 1932c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1942c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent /* Concert Sound */ 1952c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVCS_Handle_t hCSInstance; /* Concert Sound instance handle */ 1962c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVCS_Instance_t CS_Instance; /* Concert Sound instance */ 1972c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 CS_Active; /* Control flag */ 1982c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1992c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent /* Equalizer */ 2002c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_Handle_t hEQNBInstance; /* N-Band Equaliser instance handle */ 2012c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_Instance_t EQNB_Instance; /* N-Band Equaliser instance */ 2022c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_EQNB_BandDef_t *pEQNB_BandDefs; /* Local storage for new definitions */ 2032c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_EQNB_BandDef_t *pEQNB_UserDefs; /* Local storage for the user's definitions */ 2042c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 EQNB_Active; /* Control flag */ 2052c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2062c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent /* Dynamic Bass Enhancement */ 2072c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVDBE_Handle_t hDBEInstance; /* Dynamic Bass Enhancement instance handle */ 2082c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVDBE_Instance_t DBE_Instance; /* Dynamic Bass Enhancement instance */ 2092c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 DBE_Active; /* Control flag */ 2102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent /* Volume Control */ 2122c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVMixer3_1St_st VC_Volume; /* Volume scaler */ 2132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVMixer3_2St_st VC_BalanceMix; /* VC balance mixer */ 2142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 VC_VolumedB; /* Gain in dB */ 2152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 VC_Active; /* Control flag */ 2162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 VC_AVLFixedVolume; /* AVL fixed volume */ 2172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent /* Treble Enhancement */ 2192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_TE_Data_t *pTE_Taps; /* Treble boost Taps */ 2202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_TE_Coefs_t *pTE_State; /* State for the treble boost filter */ 2212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 TE_Active; /* Control flag */ 2222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent /* Headroom */ 2242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_HeadroomParams_t NewHeadroomParams; /* New headroom parameters pending update */ 2252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_HeadroomParams_t HeadroomParams; /* Headroom parameters */ 2262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_HeadroomBandDef_t *pHeadroom_BandDefs; /* Local storage for new definitions */ 2272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_HeadroomBandDef_t *pHeadroom_UserDefs; /* Local storage for the user's definitions */ 2282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_UINT16 Headroom; /* Value of the current headroom */ 2292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent /* Spectrum Analyzer */ 2312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent pLVPSA_Handle_t hPSAInstance; /* Spectrum Analyzer instance handle */ 2322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVPSA_InstancePr_t PSA_Instance; /* Spectrum Analyzer instance */ 2332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVPSA_InitParams_t PSA_InitParams; /* Spectrum Analyzer initialization parameters */ 2342c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVPSA_ControlParams_t PSA_ControlParams; /* Spectrum Analyzer control parameters */ 2352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 PSA_GainOffset; /* Tone control flag */ 2362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_Callback CallBack; 2372c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 *pPSAInput; /* PSA input pointer */ 2382c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 NoSmoothVolume; /* Enable or disable smooth volume changes*/ 2402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVM_Instance_t; 2422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 2452c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 2462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Function Prototypes */ 2472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 2482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 2492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2502c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentLVM_ReturnStatus_en LVM_ApplyNewSettings(LVM_Handle_t hInstance); 2512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid LVM_SetTrebleBoost( LVM_Instance_t *pInstance, 2532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_ControlParams_t *pParams); 2542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid LVM_SetVolume( LVM_Instance_t *pInstance, 2562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_ControlParams_t *pParams); 2572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2582c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentLVM_INT32 LVM_VCCallBack(void* pBundleHandle, 2592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent void* pGeneralPurpose, 2602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent short CallBackParam); 2612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid LVM_SetHeadroom( LVM_Instance_t *pInstance, 2632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_ControlParams_t *pParams); 2642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid LVM_BufferIn( LVM_Handle_t hInstance, 2662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent const LVM_INT16 *pInData, 2672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 **pToProcess, 2682c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 **pProcessed, 2692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_UINT16 *pNumSamples); 2702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2712c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid LVM_BufferOut( LVM_Handle_t hInstance, 2722c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 *pOutData, 2732c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_UINT16 *pNumSamples); 2742c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2752c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentLVM_INT32 LVM_AlgoCallBack( void *pBundleHandle, 2762c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent void *pData, 2772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 callbackId); 2782c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifdef __cplusplus 2802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} 2812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /* __cplusplus */ 2822c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /* __LVM_PRIVATE_H__ */ 2842c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 285