LVDBE.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: nxp007753 $
212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent     $Revision: 1081 $
222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent     $Date: 2010-07-05 11:48:44 +0200 (Mon, 05 Jul 2010) $
232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent*****************************************************************************************/
252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    Header file for the application layer interface of Dynamic Bass Enhancement       */
292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  module.                                                                             */
302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  This files includes all definitions, types, structures and function                 */
322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  prototypes required by the calling layer. All other types, structures and           */
332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  functions are private.                                                              */
342c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
372c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    Note: 1                                                                           */
382c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    =======                                                                           */
392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    The algorithm can execute either with separate input and output buffers or with   */
402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    a common buffer, i.e. the data is processed in-place.                             */
412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    Note: 2                                                                           */
452c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    =======                                                                           */
462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    The Dynamic Bass Enhancement algorithm always processes data as stereo input. Mono*/
472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  format data is not supported. The data is interleaved as follows:                   */
482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*              Byte Offset         Stereo Input         Mono-In-Stereo Input           */
502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*              ===========         ============         ====================           */
512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                  0               Left Sample #1          Mono Sample #1              */
522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                  2               Right Sample #1         Mono Sample #1              */
532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                  4               Left Sample #2          Mono Sample #2              */
542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                  6               Right Sample #2         Mono Sample #2              */
552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                  .                      .                     .                      */
562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                  .                      .                     .                      */
572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  Mono format data is not supported, the calling routine must convert a Mono stream   */
592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    in to Mono-In-Stereo format.                                                      */
602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifndef __LVDBE_H__
642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define __LVDBE_H__
652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifdef __cplusplus
672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentextern "C" {
682c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /* __cplusplus */
692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
712c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
722c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
732c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    Includes                                                                          */
742c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
752c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
762c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "LVM_Types.h"
782c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
822c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    Definitions                                                                       */
832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
842c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
852c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
862c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Memory table*/
872c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVDBE_NR_MEMORY_REGIONS        4                            /* Number of memory regions */
882c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
892c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Bass Enhancement effect level */
902c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVDBE_EFFECT_03DB            3                              /* Effect defines for backwards compatibility */
912c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVDBE_EFFECT_06DB            6
922c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVDBE_EFFECT_09DB            9
932c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVDBE_EFFECT_12DB            12
942c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVDBE_EFFECT_15DB            15
952c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
962c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
972c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
982c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
992c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    Types                                                                             */
1002c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
1012c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
1022c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1032c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Instance handle */
1042c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef void    *LVDBE_Handle_t;
1052c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1062c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1072c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Operating modes */
1082c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef enum
1092c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
1102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_OFF      = 0,
1112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_ON       = 1,
1122c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_MODE_MAX = LVM_MAXINT_32
1132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVDBE_Mode_en;
1142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* High pass filter */
1172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef enum
1182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
1192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_HPF_OFF = 0,
1202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_HPF_ON  = 1,
1212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_HPF_MAX = LVM_MAXINT_32
1222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVDBE_FilterSelect_en;
1232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Volume control */
1262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef enum
1272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
1282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_VOLUME_OFF = 0,
1292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_VOLUME_ON  = 1,
1302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_VOLUME_MAX = LVM_MAXINT_32
1312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVDBE_Volume_en;
1322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1342c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Memory Types */
1352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef enum
1362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
1372c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_PERSISTENT      = 0,
1382c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_PERSISTENT_DATA = 1,
1392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_PERSISTENT_COEF = 2,
1402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_SCRATCH         = 3,
1412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_MEMORY_MAX      = LVM_MAXINT_32
1422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVDBE_MemoryTypes_en;
1442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1452c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Function return status */
1472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef enum
1482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
1492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_SUCCESS        = 0,                        /* Successful return from a routine */
1502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_ALIGNMENTERROR = 1,                        /* Memory alignment error */
1512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_NULLADDRESS    = 2,                        /* NULL allocation address */
1522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_TOOMANYSAMPLES = 3,                        /* Maximum block size exceeded */
1532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_SIZEERROR      = 4,                        /* Incorrect structure size */
1542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_STATUS_MAX     = LVM_MAXINT_32
1552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVDBE_ReturnStatus_en;
1562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
1592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
1602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    Linked enumerated type and capability definitions                                 */
1612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
1622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  The capability definitions are used to define the required capabilities at          */
1632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  initialisation, these are added together to give the capability word. The           */
1642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  enumerated type is used to select the mode through a control function at run time.  */
1652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
1662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  The capability definition is related to the enumerated type value by the equation:  */
1672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
1682c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*          Capability_value = 2^Enumerated_value                                       */
1692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
1702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  For example, a module could be configurd at initialisation to support two sample    */
1712c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  rates only by calling the init function with the value:                             */
1722c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*      Capabilities.SampleRate = LVDBE_CAP_32000 + LVCS_DBE_44100;                     */
1732c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
1742c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  and at run time it would be passed the value LVDBE_FS_32000 through the control     */
1752c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  function to select operation at 32kHz                                               */
1762c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
1772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
1782c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*
1802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Bass Enhancement centre frequency
1812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent */
1822c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVDBE_CAP_CENTRE_55Hz       1
1832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVDBE_CAP_CENTRE_66Hz       2
1842c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVDBE_CAP_CENTRE_78Hz       4
1852c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVDBE_CAP_CENTRE_90Hz       8
1862c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1872c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef enum
1882c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
1892c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_CENTRE_55HZ = 0,
1902c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_CENTRE_66HZ = 1,
1912c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_CENTRE_78HZ = 2,
1922c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_CENTRE_90HZ = 3,
1932c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_CENTRE_MAX  = LVM_MAXINT_32
1942c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVDBE_CentreFreq_en;
1952c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1962c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1972c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*
1982c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Supported sample rates in samples per second
1992c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent */
2002c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVDBE_CAP_FS_8000                1
2012c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVDBE_CAP_FS_11025               2
2022c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVDBE_CAP_FS_12000               4
2032c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVDBE_CAP_FS_16000               8
2042c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVDBE_CAP_FS_22050               16
2052c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVDBE_CAP_FS_24000               32
2062c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVDBE_CAP_FS_32000               64
2072c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVDBE_CAP_FS_44100               128
2082c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVDBE_CAP_FS_48000               256
2092c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef enum
2112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
2122c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_FS_8000  = 0,
2132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_FS_11025 = 1,
2142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_FS_12000 = 2,
2152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_FS_16000 = 3,
2162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_FS_22050 = 4,
2172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_FS_24000 = 5,
2182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_FS_32000 = 6,
2192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_FS_44100 = 7,
2202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_FS_48000 = 8,
2212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_FS_MAX   = LVM_MAXINT_32
2222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVDBE_Fs_en;
2232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
2262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
2272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    Structures                                                                        */
2282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
2292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
2302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Memory region definition */
2322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
2332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
2342c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_UINT32                Size;                        /* Region size in bytes */
2352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_UINT16                Alignment;                  /* Region alignment in bytes */
2362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_MemoryTypes_en      Type;                       /* Region type */
2372c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    void                      *pBaseAddress;              /* Pointer to the region base address */
2382c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVDBE_MemoryRegion_t;
2392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Memory table containing the region definitions */
2422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
2432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
2442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_MemoryRegion_t    Region[LVDBE_NR_MEMORY_REGIONS];  /* One definition for each region */
2452c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVDBE_MemTab_t;
2462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Parameter structure */
2492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
2502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
2512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_Mode_en           OperatingMode;
2522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_Fs_en             SampleRate;
2532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16               EffectLevel;
2542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_CentreFreq_en     CentreFrequency;
2552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_FilterSelect_en   HPFSelect;
2562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVDBE_Volume_en         VolumeControl;
2572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16               VolumedB;
2582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16               HeadroomdB;
2592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVDBE_Params_t;
2612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Capability structure */
2642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
2652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
2662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent      LVM_UINT16              SampleRate;               /* Sampling rate capabilities */
2672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent      LVM_UINT16              CentreFrequency;          /* Centre frequency capabilities */
2682c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent      LVM_UINT16              MaxBlockSize;             /* Maximum block size in sample pairs */
2692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVDBE_Capabilities_t;
2702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2712c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2722c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
2732c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
2742c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    Function Prototypes                                                               */
2752c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
2762c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
2772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2782c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
2792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
2802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* FUNCTION:                 LVDBE_Memory                                               */
2812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
2822c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* DESCRIPTION:                                                                         */
2832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    This function is used for memory allocation and free. It can be called in         */
2842c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    two ways:                                                                         */
2852c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
2862c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*        hInstance = NULL                Returns the memory requirements               */
2872c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*        hInstance = Instance handle        Returns the memory requirements and        */
2882c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                        allocated base addresses for the instance     */
2892c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
2902c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    When this function is called for memory allocation (hInstance=NULL) the memory    */
2912c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  base address pointers are NULL on return.                                           */
2922c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
2932c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    When the function is called for free (hInstance = Instance Handle) the memory     */
2942c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  table returns the allocated memory and base addresses used during initialisation.   */
2952c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
2962c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* PARAMETERS:                                                                          */
2972c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  hInstance                Instance Handle                                            */
2982c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  pMemoryTable             Pointer to an empty memory definition table                */
2992c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    pCapabilities            Pointer to the default capabilites                       */
3002c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
3012c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* RETURNS:                                                                             */
3022c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  LVDBE_SUCCESS            Succeeded                                                  */
3032c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
3042c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* NOTES:                                                                               */
3052c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    1.    This function may be interrupted by the LVDBE_Process function              */
3062c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
3072c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
3082c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
3092c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentLVDBE_ReturnStatus_en LVDBE_Memory(LVDBE_Handle_t           hInstance,
3102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                   LVDBE_MemTab_t           *pMemoryTable,
3112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                   LVDBE_Capabilities_t     *pCapabilities);
3122c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
3132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
3142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
3152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
3162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* FUNCTION:                 LVDBE_Init                                                 */
3172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
3182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* DESCRIPTION:                                                                         */
3192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    Create and initialisation function for the Bass Enhancement module                */
3202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
3212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    This function can be used to create an algorithm instance by calling with         */
3222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    hInstance set to NULL. In this case the algorithm returns the new instance        */
3232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    handle.                                                                           */
3242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
3252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    This function can be used to force a full re-initialisation of the algorithm      */
3262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    by calling with hInstance = Instance Handle. In this case the memory table        */
3272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    should be correct for the instance, this can be ensured by calling the function   */
3282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    LVDBE_Memory before calling this function.                                        */
3292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
3302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* PARAMETERS:                                                                          */
3312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  hInstance                  Instance handle                                          */
3322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  pMemoryTable             Pointer to the memory definition table                     */
3332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  pCapabilities            Pointer to the initialisation capabilities                 */
3342c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
3352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* RETURNS:                                                                             */
3362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  LVDBE_SUCCESS                Initialisation succeeded                               */
3372c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  LVDBE_ALIGNMENTERROR        Instance or scratch memory on incorrect alignment       */
3382c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    LVDBE_NULLADDRESS            One or more memory has a NULL pointer                */
3392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
3402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* NOTES:                                                                               */
3412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  1.     The instance handle is the pointer to the base address of the first memory   */
3422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*        region.                                                                       */
3432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    2.    This function must not be interrupted by the LVDBE_Process function         */
3442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
3452c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
3462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
3472c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentLVDBE_ReturnStatus_en LVDBE_Init(LVDBE_Handle_t             *phInstance,
3482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                   LVDBE_MemTab_t           *pMemoryTable,
3492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                   LVDBE_Capabilities_t     *pCapabilities);
3502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
3512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
3522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
3532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
3542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* FUNCTION:                  LVDBE_GetParameters                                       */
3552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
3562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* DESCRIPTION:                                                                         */
3572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    Request the Bass Enhancement parameters. The current parameter set is returned    */
3582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    via the parameter pointer.                                                        */
3592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
3602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* PARAMETERS:                                                                          */
3612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  hInstance                   Instance handle                                         */
3622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  pParams                  Pointer to an empty parameter structure                    */
3632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
3642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* RETURNS:                                                                             */
3652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  LVDBE_SUCCESS             Always succeeds                                           */
3662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
3672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* NOTES:                                                                               */
3682c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  1.    This function may be interrupted by the LVDBE_Process function                */
3692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
3702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
3712c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
3722c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentLVDBE_ReturnStatus_en LVDBE_GetParameters(LVDBE_Handle_t        hInstance,
3732c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVDBE_Params_t      *pParams);
3742c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
3752c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
3762c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
3772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
3782c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* FUNCTION:                  LVDBE_GetCapabilities                                     */
3792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
3802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* DESCRIPTION:                                                                         */
3812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    Request the Dynamic Bass Enhancement capabilities. The initial capabilities are   */
3822c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  returned via the pointer.                                                           */
3832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
3842c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* PARAMETERS:                                                                          */
3852c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  hInstance                   Instance handle                                         */
3862c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  pCapabilities              Pointer to an empty capabilitiy structure                */
3872c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
3882c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* RETURNS:                                                                             */
3892c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  LVDBE_Success             Always succeeds                                           */
3902c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
3912c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* NOTES:                                                                               */
3922c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  1.    This function may be interrupted by the LVDBE_Process function                */
3932c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
3942c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
3952c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
3962c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentLVDBE_ReturnStatus_en LVDBE_GetCapabilities(LVDBE_Handle_t            hInstance,
3972c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                              LVDBE_Capabilities_t    *pCapabilities);
3982c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
3992c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
4002c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
4012c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
4022c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* FUNCTION:                LVDBE_Control                                               */
4032c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
4042c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* DESCRIPTION:                                                                         */
4052c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  Sets or changes the Bass Enhancement parameters. Changing the parameters while the  */
4062c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  module is processing signals may have the following side effects:                   */
4072c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
4082c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  General parameters:                                                                 */
4092c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  ===================                                                                 */
4102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  OperatingMode:      Changing the mode of operation may cause a change in volume     */
4112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                      level.                                                          */
4122c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
4132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  SampleRate:         Changing the sample rate may cause pops and clicks.             */
4142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
4152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  EffectLevel:        Changing the effect level setting will have no side effects     */
4162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
4172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  CentreFrequency:    Changing the centre frequency may cause pops and clicks         */
4182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
4192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  HPFSelect:          Selecting/de-selecting the high pass filter may cause pops and  */
4202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                      clicks                                                          */
4212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
4222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  VolumedB            Changing the volume setting will have no side effects           */
4232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
4242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
4252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* PARAMETERS:                                                                          */
4262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  hInstance               Instance handle                                             */
4272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  pParams                 Pointer to a parameter structure                            */
4282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
4292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* RETURNS:                                                                             */
4302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  LVDBE_SUCCESS           Always succeeds                                             */
4312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
4322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* NOTES:                                                                               */
4332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  1.  This function must not be interrupted by the LVDBE_Process function             */
4342c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
4352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
4362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
4372c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentLVDBE_ReturnStatus_en LVDBE_Control(LVDBE_Handle_t      hInstance,
4382c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                      LVDBE_Params_t    *pParams);
4392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
4402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
4412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
4422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
4432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* FUNCTION:                 LVDBE_Process                                              */
4442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
4452c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* DESCRIPTION:                                                                         */
4462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  Process function for the Bass Enhancement module.                                   */
4472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
4482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* PARAMETERS:                                                                          */
4492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  hInstance                Instance handle                                            */
4502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  pInData                  Pointer to the input data                                  */
4512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  pOutData                 Pointer to the output data                                 */
4522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  NumSamples              Number of samples in the input buffer                       */
4532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
4542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* RETURNS:                                                                             */
4552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  LVDBE_SUCCESS             Succeeded                                                 */
4562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*    LVDBE_TOOMANYSAMPLES    NumSamples was larger than the maximum block size         */
4572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
4582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* NOTES:                                                                               */
4592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
4602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
4612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
4622c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentLVDBE_ReturnStatus_en LVDBE_Process(LVDBE_Handle_t          hInstance,
4632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                       const LVM_INT16      *pInData,
4642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                       LVM_INT16            *pOutData,
4652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                       LVM_UINT16           NumSamples);
4662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
4672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
4682c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifdef __cplusplus
4692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent}
4702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /* __cplusplus */
4712c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
4722c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /* __LVDBE_H__ */
473