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#ifndef _LVPSA_H_
192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define _LVPSA_H_
202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "LVM_Types.h"
232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifdef __cplusplus
262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentextern "C" {
272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /* __cplusplus */
282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  CONSTANTS DEFINITIONS                                                               */
322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
342c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Memory table*/
362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define     LVPSA_NR_MEMORY_REGIONS                  4      /* Number of memory regions                                          */
372c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
382c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  TYPES DEFINITIONS                                                                   */
412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                      */
422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/****************************************************************************************/
432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Memory Types */
442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef enum
452c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVPSA_PERSISTENT      = LVM_PERSISTENT,
472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVPSA_PERSISTENT_DATA = LVM_PERSISTENT_DATA,
482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVPSA_PERSISTENT_COEF = LVM_PERSISTENT_COEF,
492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVPSA_SCRATCH         = LVM_SCRATCH,
502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVPSA_MEMORY_DUMMY = LVM_MAXINT_32                      /* Force 32 bits enum, don't use it!                                 */
512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVPSA_MemoryTypes_en;
522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Level detection speed control parameters */
542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef enum
552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVPSA_SPEED_LOW,                                        /* Low speed level   detection                                       */
572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVPSA_SPEED_MEDIUM,                                     /* Medium speed level   detection                                    */
582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVPSA_SPEED_HIGH,                                       /* High speed level   detection                                      */
592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVPSA_SPEED_DUMMY = LVM_MAXINT_32                       /* Force 32 bits enum, don't use it!                                 */
602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVPSA_LevelDetectSpeed_en;
612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Filter control parameters */
632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_UINT16                 CenterFrequency;             /* Center frequency of the band-pass filter (in Hz)                  */
662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_UINT16                 QFactor;                     /* Quality factor of the filter             (in 1/100)               */
672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16                  PostGain;                    /* Postgain to apply after the filtering    (in dB Q16.0)            */
682c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVPSA_FilterParam_t;
702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
712c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* LVPSA initialization parameters */
722c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
732c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
742c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_UINT16                 SpectralDataBufferDuration;  /* Spectral data buffer duration in time (ms in Q16.0)               */
752c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_UINT16                 MaxInputBlockSize;           /* Maximum expected input block size (in samples)                    */
762c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_UINT16                 nBands;                      /* Number of bands of the SA                                         */
772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVPSA_FilterParam_t       *pFiltersParams;              /* Points to nBands filter param structures for filters settings     */
782c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVPSA_InitParams_t, *pLVPSA_InitParams_t;
802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* LVPSA control parameters */
822c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
842c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_Fs_en                  Fs;                          /* Input sampling rate                                               */
852c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVPSA_LevelDetectSpeed_en  LevelDetectionSpeed;         /* Level detection speed                                             */
862c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
872c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVPSA_ControlParams_t, *pLVPSA_ControlParams_t;
882c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
892c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Memory region definition */
902c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
912c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
922c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_UINT32                 Size;                        /* Region size in bytes                                              */
932c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVPSA_MemoryTypes_en       Type;                        /* Region type                                                       */
942c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    void                       *pBaseAddress;               /* Pointer to the region base address                                */
952c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVPSA_MemoryRegion_t;
962c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
972c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Memory table containing the region definitions */
982c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
992c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
1002c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVPSA_MemoryRegion_t       Region[LVPSA_NR_MEMORY_REGIONS];/* One definition for each region                                 */
1012c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVPSA_MemTab_t;
1022c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1032c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Audio time type */
1042c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef LVM_INT32 LVPSA_Time;
1052c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1062c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Module instance Handle */
1072c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef void *pLVPSA_Handle_t;
1082c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1092c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* LVPSA return codes */
1102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef enum
1112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
1122c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVPSA_OK,                                               /* The function ran without any problem                              */
1132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVPSA_ERROR_INVALIDPARAM,                               /* A parameter is incorrect                                          */
1142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVPSA_ERROR_WRONGTIME,                                  /* An incorrect AudioTime is used                                    */
1152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVPSA_ERROR_NULLADDRESS,                                /* A pointer has a NULL value                                        */
1162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVPSA_RETURN_DUMMY = LVM_MAXINT_32                      /* Force 32 bits enum, don't use it!                                 */
1172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVPSA_RETURN;
1182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*********************************************************************************************************************************
1222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent   FUNCTIONS PROTOTYPE
1232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent**********************************************************************************************************************************/
1242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*********************************************************************************************************************************/
1252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
1262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* FUNCTION:            LVPSA_Memory                                                                                         */
1272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
1282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* DESCRIPTION:                                                                                                                  */
1292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  This function is used for memory allocation and free. It can be called in                                                    */
1302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  two ways:                                                                                                                    */
1312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
1322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*      hInstance = NULL                Returns the memory requirements                                                          */
1332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*      hInstance = Instance handle     Returns the memory requirements and                                                      */
1342c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                      allocated base addresses for the instance                                                */
1352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
1362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  When this function is called for memory allocation (hInstance=NULL) the memory                                               */
1372c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  base address pointers are NULL on return.                                                                                    */
1382c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
1392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  When the function is called for free (hInstance = Instance Handle) the memory                                                */
1402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  table returns the allocated memory and base addresses used during initialisation.                                            */
1412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
1422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* PARAMETERS:                                                                                                                   */
1432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  hInstance           Instance Handle                                                                                          */
1442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  pMemoryTable        Pointer to an empty memory definition table                                                              */
1452c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  pInitParams         Pointer to the instance init parameters                                                                  */
1462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
1472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* RETURNS:                                                                                                                      */
1482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  LVPSA_OK            Succeeds                                                                                                 */
1492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  otherwise           Error due to bad parameters                                                                              */
1502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
1512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*********************************************************************************************************************************/
1522c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentLVPSA_RETURN LVPSA_Memory            ( pLVPSA_Handle_t             hInstance,
1532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                       LVPSA_MemTab_t             *pMemoryTable,
1542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                       LVPSA_InitParams_t         *pInitParams    );
1552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*********************************************************************************************************************************/
1572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
1582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* FUNCTION:            LVPSA_Init                                                                                               */
1592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
1602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* DESCRIPTION:                                                                                                                  */
1612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  Initializes the LVPSA module.                                                                                                */
1622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
1632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
1642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* PARAMETERS:                                                                                                                   */
1652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  phInstance          Pointer to the instance Handle                                                                           */
1662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  pInitParams         Pointer to the instance init parameters                                                                  */
1672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  pControlParams      Pointer to the instance control parameters                                                               */
1682c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  pMemoryTable        Pointer to the memory definition table                                                                   */
1692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
1702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
1712c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* RETURNS:                                                                                                                      */
1722c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  LVPSA_OK            Succeeds                                                                                                 */
1732c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  otherwise           Error due to bad parameters                                                                              */
1742c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
1752c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*********************************************************************************************************************************/
1762c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentLVPSA_RETURN LVPSA_Init              ( pLVPSA_Handle_t             *phInstance,
1772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                       LVPSA_InitParams_t          *pInitParams,
1782c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                       LVPSA_ControlParams_t       *pControlParams,
1792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                       LVPSA_MemTab_t              *pMemoryTable  );
1802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*********************************************************************************************************************************/
1822c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
1832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* FUNCTION:            LVPSA_Control                                                                                            */
1842c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
1852c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* DESCRIPTION:                                                                                                                  */
1862c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  Controls the LVPSA module.                                                                                                   */
1872c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
1882c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* PARAMETERS:                                                                                                                   */
1892c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  hInstance           Instance Handle                                                                                          */
1902c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  pNewParams          Pointer to the instance new control parameters                                                           */
1912c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
1922c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* RETURNS:                                                                                                                      */
1932c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  LVPSA_OK            Succeeds                                                                                                 */
1942c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  otherwise           Error due to bad parameters                                                                              */
1952c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
1962c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*********************************************************************************************************************************/
1972c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentLVPSA_RETURN LVPSA_Control           ( pLVPSA_Handle_t             hInstance,
1982c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                       LVPSA_ControlParams_t      *pNewParams     );
1992c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2002c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*********************************************************************************************************************************/
2012c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
2022c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* FUNCTION:            LVPSA_Process                                                                                            */
2032c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
2042c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* DESCRIPTION:                                                                                                                  */
2052c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  The process calculates the levels of the frequency bands.                                                                    */
2062c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
2072c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* PARAMETERS:                                                                                                                   */
2082c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  hInstance           Instance Handle                                                                                          */
2092c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  pLVPSA_InputSamples Pointer to the input samples buffer                                                                      */
2102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  InputBlockSize      Number of mono samples to process                                                                        */
2112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  AudioTime           Playback time of the first input sample                                                                  */
2122c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
2132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
2142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* RETURNS:                                                                                                                      */
2152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  LVPSA_OK            Succeeds                                                                                                 */
2162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  otherwise           Error due to bad parameters                                                                              */
2172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
2182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*********************************************************************************************************************************/
2192c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentLVPSA_RETURN LVPSA_Process           ( pLVPSA_Handle_t      hInstance,
2202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                       LVM_INT16           *pLVPSA_InputSamples,
2212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                       LVM_UINT16           InputBlockSize,
2222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                       LVPSA_Time           AudioTime             );
2232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*********************************************************************************************************************************/
2252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
2262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* FUNCTION:            LVPSA_GetSpectrum                                                                                        */
2272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
2282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* DESCRIPTION:                                                                                                                  */
2292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  This function is used for memory allocation and free.                                                                        */
2302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
2312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
2322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* PARAMETERS:                                                                                                                   */
2332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  hInstance            Instance Handle                                                                                         */
2342c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  GetSpectrumAudioTime Time to retrieve the values at                                                                          */
2352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  pCurrentValues       Pointer to an empty buffer : Current level values output                                                */
2362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  pPeakValues          Pointer to an empty buffer : Peak level values output                                                   */
2372c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
2382c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
2392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* RETURNS:                                                                                                                      */
2402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  LVPSA_OK            Succeeds                                                                                                 */
2412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  otherwise           Error due to bad parameters                                                                              */
2422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
2432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*********************************************************************************************************************************/
2442c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentLVPSA_RETURN LVPSA_GetSpectrum       ( pLVPSA_Handle_t      hInstance,
2452c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                       LVPSA_Time           GetSpectrumAudioTime,
2462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                       LVM_UINT8           *pCurrentValues,
2472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                       LVM_UINT8           *pPeakValues           );
2482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*********************************************************************************************************************************/
2502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
2512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* FUNCTION:            LVPSA_GetControlParams                                                                                   */
2522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
2532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* DESCRIPTION:                                                                                                                  */
2542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  Get the current control parameters of the LVPSA module.                                                                      */
2552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
2562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* PARAMETERS:                                                                                                                   */
2572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  hInstance           Instance Handle                                                                                          */
2582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  pParams             Pointer to an empty control parameters structure                                                         */
2592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* RETURNS:                                                                                                                      */
2602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  LVPSA_OK            Succeeds                                                                                                 */
2612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  otherwise           Error due to bad parameters                                                                              */
2622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
2632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*********************************************************************************************************************************/
2642c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentLVPSA_RETURN LVPSA_GetControlParams  (    pLVPSA_Handle_t            hInstance,
2652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                          LVPSA_ControlParams_t     *pParams      );
2662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*********************************************************************************************************************************/
2682c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
2692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* FUNCTION:            LVPSA_GetInitParams                                                                                      */
2702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
2712c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* DESCRIPTION:                                                                                                                  */
2722c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  Get the initialization parameters of the LVPSA module.                                                                       */
2732c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
2742c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* PARAMETERS:                                                                                                                   */
2752c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  hInstance           Instance Handle                                                                                          */
2762c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  pParams             Pointer to an empty init parameters structure                                                            */
2772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* RETURNS:                                                                                                                      */
2782c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  LVPSA_OK            Succeeds                                                                                                 */
2792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*  otherwise           Error due to bad parameters                                                                              */
2802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*                                                                                                                               */
2812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*********************************************************************************************************************************/
2822c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentLVPSA_RETURN LVPSA_GetInitParams     (    pLVPSA_Handle_t            hInstance,
2832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                          LVPSA_InitParams_t        *pParams      );
2842c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2852c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2862c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifdef __cplusplus
2872c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent}
2882c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /* __cplusplus */
2892c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2902c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /* _LVPSA_H */
291