LVEQNB.h revision 2c8e5cab3faa6d360e222b7a6c40a80083d021ac
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 $Author: beq07716 $ 212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent $Revision: 1005 $ 222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent $Date: 2010-06-28 13:58:28 +0200 (Mon, 28 Jun 2010) $ 232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent***********************************************************************************/ 252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Header file for the application layer interface of the N-Band equaliser. */ 292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* This files includes all definitions, types, structures and function */ 312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* prototypes required by the calling layer. All other types, structures and */ 322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* functions are private. */ 332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 342c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Note: 1 */ 372c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* ======= */ 382c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* The algorithm can execute either with separate input and output buffers or with */ 392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* a common buffer, i.e. the data is processed in-place. */ 402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Note: 2 */ 442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* ======= */ 452c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Two data formats are support Stereo and Mono-In-Stereo. The data is interleaved as */ 462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* follows: */ 472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Byte Offset Stereo Input Mono-In-Stereo Input */ 482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* =========== ============ ==================== */ 492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* 0 Left Sample #1 Mono Sample #1 */ 502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* 2 Right Sample #1 Mono Sample #1 */ 512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* 4 Left Sample #2 Mono Sample #2 */ 522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* 6 Right Sample #2 Mono Sample #2 */ 532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* . . . */ 542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* . . . */ 552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Mono format data is not supported, the calling routine must convert a Mono stream */ 572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* in to Mono-In-Stereo format. */ 582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Note: 3 */ 622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* ======= */ 632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* The format of the data in the filter band definition structure is as follows: */ 642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Gain is in integer dB, range -15dB to +15dB inclusive */ 662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Frequency is the centre frequency in Hz, range DC to Nyquist */ 672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* QFactor is the Q multiplied by 100, range 0.25 (25) to 12 (1200) */ 682c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Example: */ 702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Gain = 7 7dB gain */ 712c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Frequency = 2467 Centre frequency = 2.467kHz */ 722c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* QFactor = 1089 Q = 10.89 */ 732c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 742c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* The equaliser filters are passed as a pointer to and array of filter band */ 752c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* definitions structures. There must be one filter definition for each band. */ 762c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 782c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifndef __LVEQNB_H__ 812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define __LVEQNB_H__ 822c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifdef __cplusplus 842c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentextern "C" { 852c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /* __cplusplus */ 862c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 872c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 882c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 892c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 902c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Includes */ 912c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 922c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 932c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 942c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "LVM_Types.h" 952c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "LVM_Common.h" 962c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 972c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 982c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 992c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Definitions */ 1002c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 1012c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 1022c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1032c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Memory table */ 1042c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVEQNB_MEMREGION_INSTANCE 0 /* Offset to the instance memory region */ 1052c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVEQNB_MEMREGION_PERSISTENT_DATA 1 /* Offset to persistent data memory region */ 1062c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVEQNB_MEMREGION_PERSISTENT_COEF 2 /* Offset to persistent coefficient region */ 1072c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVEQNB_MEMREGION_SCRATCH 3 /* Offset to data scratch memory region */ 1082c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVEQNB_NR_MEMORY_REGIONS 4 /* Number of memory regions */ 1092c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Callback events */ 1112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVEQNB_EVENT_NONE 0x0000 /* Not a valid event */ 1122c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVEQNB_EVENT_ALGOFF 0x0001 /* EQNB has completed switch off */ 1132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 1152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 1162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Types */ 1172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 1182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 1192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Instance handle */ 1212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef void *LVEQNB_Handle_t; 1222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Operating modes */ 1252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef enum 1262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 1272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_BYPASS = 0, 1282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_ON = 1, 1292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_MODE_MAX = LVM_MAXINT_32 1302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVEQNB_Mode_en; 1312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Filter mode control */ 1342c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef enum 1352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 1362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_FILTER_OFF = 0, 1372c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_FILTER_ON = 1, 1382c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_FILTER_DUMMY = LVM_MAXINT_32 1392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVEQNB_FilterMode_en; 1402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Memory Types */ 1432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef enum 1442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 1452c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_PERSISTENT = 0, 1462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_PERSISTENT_DATA = 1, 1472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_PERSISTENT_COEF = 2, 1482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_SCRATCH = 3, 1492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_MEMORY_MAX = LVM_MAXINT_32 1502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVEQNB_MemoryTypes_en; 1512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Function return status */ 1542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef enum 1552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 1562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_SUCCESS = 0, /* Successful return from a routine */ 1572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_ALIGNMENTERROR = 1, /* Memory alignment error */ 1582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_NULLADDRESS = 2, /* NULL allocation address */ 1592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_TOOMANYSAMPLES = 3, /* Maximum block size exceeded */ 1602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_STATUS_MAX = LVM_MAXINT_32 1612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVEQNB_ReturnStatus_en; 1622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 1652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 1662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Linked enumerated type and capability definitions */ 1672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 1682c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* The capability definitions are used to define the required capabilities at */ 1692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* initialisation, these are added together to give the capability word. The */ 1702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* enumerated type is used to select the mode through a control function at run time. */ 1712c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 1722c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* The capability definition is related to the enumerated type value by the equation: */ 1732c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 1742c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Capability_value = 2^Enumerated_value */ 1752c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 1762c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* For example, a module could be configurd at initialisation to support two sample */ 1772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* rates only by calling the init function with the value: */ 1782c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Capabilities.SampleRate = LVEQNB_CAP_32000 + LVEQNB_CAP_44100; */ 1792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 1802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* and at run time it would be passed the value LVEQNB_FS_32000 through the control */ 1812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* function to select operation at 32kHz */ 1822c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 1832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 1842c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1852c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* 1862c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Supported source data formats 1872c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent */ 1882c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVEQNB_CAP_STEREO 1 1892c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVEQNB_CAP_MONOINSTEREO 2 1902c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1912c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef enum 1922c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 1932c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_STEREO = 0, 1942c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_MONOINSTEREO = 1, 1952c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_SOURCE_MAX = LVM_MAXINT_32 1962c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVEQNB_SourceFormat_en; 1972c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1982c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1992c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* 2002c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Supported sample rates in samples per second 2012c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent */ 2022c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVEQNB_CAP_FS_8000 1 2032c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVEQNB_CAP_FS_11025 2 2042c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVEQNB_CAP_FS_12000 4 2052c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVEQNB_CAP_FS_16000 8 2062c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVEQNB_CAP_FS_22050 16 2072c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVEQNB_CAP_FS_24000 32 2082c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVEQNB_CAP_FS_32000 64 2092c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVEQNB_CAP_FS_44100 128 2102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVEQNB_CAP_FS_48000 256 2112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2122c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef enum 2132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 2142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_FS_8000 = 0, 2152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_FS_11025 = 1, 2162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_FS_12000 = 2, 2172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_FS_16000 = 3, 2182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_FS_22050 = 4, 2192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_FS_24000 = 5, 2202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_FS_32000 = 6, 2212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_FS_44100 = 7, 2222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_FS_48000 = 8, 2232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_FS_MAX = LVM_MAXINT_32 2242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVEQNB_Fs_en; 2252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 2282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 2292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Structures */ 2302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 2312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 2322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Memory region definition */ 2342c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct 2352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 2362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_UINT32 Size; /* Region size in bytes */ 2372c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_UINT16 Alignment; /* Region alignment in bytes */ 2382c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_MemoryTypes_en Type; /* Region type */ 2392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent void *pBaseAddress; /* Pointer to the region base address */ 2402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVEQNB_MemoryRegion_t; 2412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Memory table containing the region definitions */ 2442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct 2452c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 2462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_MemoryRegion_t Region[LVEQNB_NR_MEMORY_REGIONS]; /* One definition for each region */ 2472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVEQNB_MemTab_t; 2482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Equaliser band definition */ 2512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct 2522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 2532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 Gain; /* Band gain in dB */ 2542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_UINT16 Frequency; /* Band centre frequency in Hz */ 2552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_UINT16 QFactor; /* Band quality factor */ 2562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVEQNB_BandDef_t; 2572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Parameter structure */ 2602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct 2612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 2622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent /* General parameters */ 2632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_Mode_en OperatingMode; 2642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_Fs_en SampleRate; 2652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_SourceFormat_en SourceFormat; 2662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent /* Equaliser parameters */ 2682c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_UINT16 NBands; /* Number of bands */ 2692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_BandDef_t *pBandDefinition; /* Pointer to equaliser definitions */ 2702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2712c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVEQNB_Params_t; 2722c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2732c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2742c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Capability structure */ 2752c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct 2762c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 2772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent /* General parameters */ 2782c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_UINT16 SampleRate; 2792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_UINT16 SourceFormat; 2802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_UINT16 MaxBlockSize; 2812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_UINT16 MaxBands; 2822c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent /* Callback parameters */ 2842c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_Callback CallBack; /* Bundle callback */ 2852c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent void *pBundleInstance; /* Bundle instance handle */ 2862c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2872c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVEQNB_Capabilities_t; 2882c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2892c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2902c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 2912c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 2922c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Function Prototypes */ 2932c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 2942c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 2952c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2962c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 2972c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 2982c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* FUNCTION: LVEQNB_Memory */ 2992c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 3002c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* DESCRIPTION: */ 3012c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* This function is used for memory allocation and free. It can be called in */ 3022c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* two ways: */ 3032c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 3042c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* hInstance = NULL Returns the memory requirements */ 3052c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* hInstance = Instance handle Returns the memory requirements and */ 3062c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* allocated base addresses for the instance */ 3072c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 3082c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* When this function is called for memory allocation (hInstance=NULL) the memory */ 3092c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* base address pointers are NULL on return. */ 3102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 3112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* When the function is called for free (hInstance = Instance Handle) the memory */ 3122c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* table returns the allocated memory and base addresses used during initialisation. */ 3132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 3142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* PARAMETERS: */ 3152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* hInstance Instance Handle */ 3162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* pMemoryTable Pointer to an empty memory definition table */ 3172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* pCapabilities Pointer to the default capabilities */ 3182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 3192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* RETURNS: */ 3202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* LVEQNB_SUCCESS Succeeded */ 3212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* LVEQNB_NULLADDRESS When any of pMemoryTable and pCapabilities is NULL address */ 3222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 3232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* NOTES: */ 3242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* 1. This function may be interrupted by the LVEQNB_Process function */ 3252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 3262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 3272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 3282c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentLVEQNB_ReturnStatus_en LVEQNB_Memory(LVEQNB_Handle_t hInstance, 3292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_MemTab_t *pMemoryTable, 3302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_Capabilities_t *pCapabilities); 3312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 3322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 3332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 3342c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 3352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* FUNCTION: LVEQNB_Init */ 3362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 3372c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* DESCRIPTION: */ 3382c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Create and initialisation function for the N-Band equalliser module */ 3392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 3402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* This function can be used to create an algorithm instance by calling with */ 3412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* hInstance set to NULL. In this case the algorithm returns the new instance */ 3422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* handle. */ 3432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 3442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* This function can be used to force a full re-initialisation of the algorithm */ 3452c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* by calling with hInstance = Instance Handle. In this case the memory table */ 3462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* should be correct for the instance, this can be ensured by calling the function */ 3472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* LVEQNB_Memory before calling this function. */ 3482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 3492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* PARAMETERS: */ 3502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* hInstance Instance handle */ 3512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* pMemoryTable Pointer to the memory definition table */ 3522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* pCapabilities Pointer to the initialisation capabilities */ 3532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 3542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* RETURNS: */ 3552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* LVEQNB_SUCCESS Initialisation succeeded */ 3562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* LVEQNB_NULLADDRESS When pCapabilities or pMemoryTableis or phInstance are NULL */ 3572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* LVEQNB_NULLADDRESS One or more of the memory regions has a NULL base address */ 3582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* pointer for a memory region with a non-zero size. */ 3592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 3602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 3612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* NOTES: */ 3622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* 1. The instance handle is the pointer to the base address of the first memory */ 3632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* region. */ 3642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* 2. This function must not be interrupted by the LVEQNB_Process function */ 3652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 3662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 3672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 3682c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentLVEQNB_ReturnStatus_en LVEQNB_Init(LVEQNB_Handle_t *phInstance, 3692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_MemTab_t *pMemoryTable, 3702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_Capabilities_t *pCapabilities); 3712c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 3722c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 3732c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 3742c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 3752c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* FUNCTION: LVEQNB_GetParameters */ 3762c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 3772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* DESCRIPTION: */ 3782c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Request the equaliser module parameters. The current parameter set is returned */ 3792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* via the parameter pointer. */ 3802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 3812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* PARAMETERS: */ 3822c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* hInstance Instance handle */ 3832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* pParams Pointer to an empty parameter structure */ 3842c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 3852c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* RETURNS: */ 3862c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* LVEQNB_SUCCESS Succeeds */ 3872c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* LVEQNB_NULLADDRESS Instance or pParams is NULL pointer */ 3882c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 3892c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* NOTES: */ 3902c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* 1. This function may be interrupted by the LVEQNB_Process function */ 3912c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 3922c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 3932c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 3942c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentLVEQNB_ReturnStatus_en LVEQNB_GetParameters(LVEQNB_Handle_t hInstance, 3952c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_Params_t *pParams); 3962c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 3972c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 3982c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 3992c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 4002c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* FUNCTION: LVEQNB_GetCapabilities */ 4012c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 4022c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* DESCRIPTION: */ 4032c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Request the equaliser module capabilities. The capabilities set is returned */ 4042c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* via the pointer. */ 4052c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 4062c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* PARAMETERS: */ 4072c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* hInstance Instance handle */ 4082c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* pCapabilities Pointer to an empty capability structure */ 4092c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 4102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* RETURNS: */ 4112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* LVEQNB_SUCCESS Succeeds */ 4122c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* LVEQNB_NULLADDRESS hInstance or pCapabilities is NULL */ 4132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 4142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* NOTES: */ 4152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* 1. This function may be interrupted by the LVEQNB_Process function */ 4162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 4172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 4182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 4192c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentLVEQNB_ReturnStatus_en LVEQNB_GetCapabilities(LVEQNB_Handle_t hInstance, 4202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_Capabilities_t *pCapabilities); 4212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 4222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 4232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 4242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 4252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* FUNCTION: LVEQNB_Control */ 4262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 4272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* DESCRIPTION: */ 4282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Sets or changes the equaliser module parameters. */ 4292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 4302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* PARAMETERS: */ 4312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* hInstance Instance handle */ 4322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* pParams Pointer to a parameter structure */ 4332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 4342c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* RETURNS: */ 4352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* LVEQNB_SUCCESS Succeeded */ 4362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* LVEQNB_NULLADDRESS Instance or pParams is NULL pointer */ 4372c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* LVEQNB_NULLADDRESS NULL address for the equaliser filter definitions and the */ 4382c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* number of bands is non-zero */ 4392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 4402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* NOTES: */ 4412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* 1. This function may be interrupted by the LVEQNB_Process function */ 4422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 4432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 4442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 4452c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentLVEQNB_ReturnStatus_en LVEQNB_Control(LVEQNB_Handle_t hInstance, 4462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVEQNB_Params_t *pParams); 4472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 4482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 4492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 4502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 4512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* FUNCTION: LVEQNB_Process */ 4522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 4532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* DESCRIPTION: */ 4542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Process function for the LifeVibes module. */ 4552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 4562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* PARAMETERS: */ 4572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* hInstance Instance handle */ 4582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* pInData Pointer to the input data */ 4592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* pOutData Pointer to the output data */ 4602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* NumSamples Number of samples in the input buffer */ 4612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 4622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* RETURNS: */ 4632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* LVEQNB_SUCCESS Succeeded */ 4642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* LVEQNB_NULLADDRESS When hInstance, pInData or pOutData are NULL */ 4652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* LVEQNB_ALIGNMENTERROR When pInData or pOutData are not 32-bit aligned */ 4662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* LVEQNB_TOOMANYSAMPLES NumSamples was larger than the maximum block size */ 4672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 4682c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* NOTES: */ 4692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 4702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/ 4712c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 4722c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentLVEQNB_ReturnStatus_en LVEQNB_Process(LVEQNB_Handle_t hInstance, 4732c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent const LVM_INT16 *pInData, 4742c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 *pOutData, 4752c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_UINT16 NumSamples); 4762c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 4772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 4782c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 4792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifdef __cplusplus 4802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} 4812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /* __cplusplus */ 4822c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 4832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /* __LVEQNB__ */ 4842c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 485