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