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