12c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* 22c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent * Copyright (C) 2004-2010 NXP Software 32c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent * Copyright (C) 2010 The Android Open Source Project 42c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent * 52c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent * Licensed under the Apache License, Version 2.0 (the "License"); 62c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent * you may not use this file except in compliance with the License. 72c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent * You may obtain a copy of the License at 82c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent * 92c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent * http://www.apache.org/licenses/LICENSE-2.0 102c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent * 112c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent * Unless required by applicable law or agreed to in writing, software 122c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent * distributed under the License is distributed on an "AS IS" BASIS, 132c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 142c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent * See the License for the specific language governing permissions and 152c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent * limitations under the License. 162c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent */ 172c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 182c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 192c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 202c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Header file for the application layer interface of Concert Sound, Bass Enhancement, */ 212c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Equalizer, Power Spectrum Analyzer, Trebble Enhancement and volume management */ 222c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* bundle. */ 232c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 242c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* This files includes all definitions, types, structures and function */ 252c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* prototypes required by the calling layer. All other types, structures and */ 262c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* functions are private. */ 272c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 282c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 292c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 302c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Note: 1 */ 312c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* ======= */ 322c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* The algorithm can execute either with separate input and output buffers or with */ 332c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* a common buffer, i.e. the data is processed in-place. */ 342c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 352c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 362c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 372c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Note: 2 */ 382c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* ======= */ 392c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Three data formats are support Stereo,Mono-In-Stereo and Mono. The data is */ 402c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* interleaved as follows: */ 412c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 422c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Byte Offset Stereo Input Mono-In-Stereo Input Mono Input */ 432c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* =========== ============ ==================== ============== */ 442c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* 0 Left Sample #1 Mono Sample #1 Mono Sample #1 */ 452c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* 2 Right Sample #1 Mono Sample #1 Mono Sample #2 */ 462c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* 4 Left Sample #2 Mono Sample #2 Mono Sample #3 */ 472c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* 6 Right Sample #2 Mono Sample #2 Mono Sample #4 */ 482c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* . . . . */ 492c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* . . . . */ 502c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 512c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 522c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 532c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent#ifndef __LVM_H__ 542c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent#define __LVM_H__ 552c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 562c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent#ifdef __cplusplus 572c87e9c923b0362fabf8c97ff63997542394c428Eric Laurentextern "C" { 582c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent#endif /* __cplusplus */ 592c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 602c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 612c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 622c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 632c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Includes */ 642c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 652c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 662c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 672c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent#include "LVM_Types.h" 682c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 692c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 702c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 712c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 722c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Definitions */ 732c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 742c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 752c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 762c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Memory table*/ 772c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent#define LVM_NR_MEMORY_REGIONS 4 /* Number of memory regions */ 782c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 792c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Concert Sound effect level presets */ 802c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent#define LVM_CS_EFFECT_NONE 0 /* 0% effect, minimum value */ 812c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent#define LVM_CS_EFFECT_LOW 16384 /* 50% effect */ 822c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent#define LVM_CS_EFFECT_MED 24576 /* 75% effect */ 832c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent#define LVM_CS_EFFECT_HIGH 32767 /* 100% effect, maximum value */ 842c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 852c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Treble enhancement */ 862c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent#define LVM_TE_LOW_MIPS 32767 872c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 882c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Bass enhancement effect level presets */ 892c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent#define LVM_BE_0DB 0 /* 0dB boost, no effect */ 902c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent#define LVM_BE_3DB 3 /* +3dB boost */ 912c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent#define LVM_BE_6DB 6 /* +6dB boost */ 922c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent#define LVM_BE_9DB 9 /* +9dB boost */ 932c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent#define LVM_BE_12DB 12 /* +12dB boost */ 942c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent#define LVM_BE_15DB 15 /* +15dB boost */ 952c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 962c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* N-Band Equalizer */ 972c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent#define LVM_EQ_NBANDS 5 /* Number of bands for equalizer */ 982c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 992c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Headroom management */ 1002c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent#define LVM_HEADROOM_MAX_NBANDS 5 1012c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 1022c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 1032c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 1042c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Types */ 1052c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 1062c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 1072c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 1082c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Instance handle */ 1092c87e9c923b0362fabf8c97ff63997542394c428Eric Laurenttypedef void *LVM_Handle_t; 1102c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 1112c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 1122c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Status return values */ 1132c87e9c923b0362fabf8c97ff63997542394c428Eric Laurenttypedef enum 1142c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent{ 1152c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_SUCCESS = 0, /* Successful return from a routine */ 1162c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_ALIGNMENTERROR = 1, /* Memory alignment error */ 1172c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_NULLADDRESS = 2, /* NULL allocation address */ 1182c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_OUTOFRANGE = 3, /* Out of range control parameter */ 1192c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_INVALIDNUMSAMPLES = 4, /* Invalid number of samples */ 1202c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_WRONGAUDIOTIME = 5, /* Wrong time value for audio time*/ 1212c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_ALGORITHMDISABLED = 6, /* Algorithm is disabled*/ 1222c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_ALGORITHMPSA = 7, /* Algorithm PSA returns an error */ 1232c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_RETURNSTATUS_DUMMY = LVM_MAXENUM 1242c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent} LVM_ReturnStatus_en; 1252c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 1262c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 1272c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Buffer Management mode */ 1282c87e9c923b0362fabf8c97ff63997542394c428Eric Laurenttypedef enum 1292c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent{ 1302c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_MANAGED_BUFFERS = 0, 1312c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_UNMANAGED_BUFFERS = 1, 1322c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_BUFFERS_DUMMY = LVM_MAXENUM 1332c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent} LVM_BufferMode_en; 1342c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 1352c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Output device type */ 1362c87e9c923b0362fabf8c97ff63997542394c428Eric Laurenttypedef enum 1372c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent{ 1382c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_HEADPHONES = 0, 1392c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_EX_HEADPHONES = 1, 1402c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_SPEAKERTYPE_MAX = LVM_MAXENUM 1412c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent} LVM_OutputDeviceType_en; 1422c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 1432c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Virtualizer mode selection*/ 1442c87e9c923b0362fabf8c97ff63997542394c428Eric Laurenttypedef enum 1452c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent{ 1462c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_CONCERTSOUND = 0, 1472c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_VIRTUALIZERTYPE_DUMMY = LVM_MAXENUM 1482c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent} LVM_VirtualizerType_en; 1492c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 1502c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* N-Band Equaliser operating mode */ 1512c87e9c923b0362fabf8c97ff63997542394c428Eric Laurenttypedef enum 1522c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent{ 1532c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_EQNB_OFF = 0, 1542c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_EQNB_ON = 1, 1552c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_EQNB_DUMMY = LVM_MAXENUM 1562c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent} LVM_EQNB_Mode_en; 1572c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 1582c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Bass Enhancement operating mode */ 1592c87e9c923b0362fabf8c97ff63997542394c428Eric Laurenttypedef enum 1602c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent{ 1612c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_BE_OFF = 0, 1622c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_BE_ON = 1, 1632c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_BE_DUMMY = LVM_MAXENUM 1642c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent} LVM_BE_Mode_en; 1652c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 1662c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Bass Enhancement centre frequency selection control */ 1672c87e9c923b0362fabf8c97ff63997542394c428Eric Laurenttypedef enum 1682c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent{ 1692c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_BE_CENTRE_55Hz = 0, 1702c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_BE_CENTRE_66Hz = 1, 1712c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_BE_CENTRE_78Hz = 2, 1722c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_BE_CENTRE_90Hz = 3, 1732c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_BE_CENTRE_DUMMY = LVM_MAXENUM 1742c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent} LVM_BE_CentreFreq_en; 1752c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 1762c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Bass Enhancement HPF selection control */ 1772c87e9c923b0362fabf8c97ff63997542394c428Eric Laurenttypedef enum 1782c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent{ 1792c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_BE_HPF_OFF = 0, 1802c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_BE_HPF_ON = 1, 1812c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_BE_HPF_DUMMY = LVM_MAXENUM 1822c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent} LVM_BE_FilterSelect_en; 1832c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 1842c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Volume Control operating mode */ 1852c87e9c923b0362fabf8c97ff63997542394c428Eric Laurenttypedef enum 1862c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent{ 1872c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_VC_OFF = 0, 1882c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_VC_ON = 1, 1892c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_VC_DUMMY = LVM_MAXENUM 1902c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent} LVM_VC_Mode_en; 1912c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 1922c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Treble Enhancement operating mode */ 1932c87e9c923b0362fabf8c97ff63997542394c428Eric Laurenttypedef enum 1942c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent{ 1952c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_TE_OFF = 0, 1962c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_TE_ON = 1, 1972c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_TE_DUMMY = LVM_MAXENUM 1982c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent} LVM_TE_Mode_en; 1992c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 2002c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Headroom management operating mode */ 2012c87e9c923b0362fabf8c97ff63997542394c428Eric Laurenttypedef enum 2022c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent{ 2032c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_HEADROOM_OFF = 0, 2042c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_HEADROOM_ON = 1, 2052c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_Headroom_DUMMY = LVM_MAXENUM 2062c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent} LVM_Headroom_Mode_en; 2072c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 2082c87e9c923b0362fabf8c97ff63997542394c428Eric Laurenttypedef enum 2092c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent{ 2102c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_PSA_SPEED_SLOW, /* Peak decaying at slow speed */ 2112c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_PSA_SPEED_MEDIUM, /* Peak decaying at medium speed */ 2122c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_PSA_SPEED_FAST, /* Peak decaying at fast speed */ 2132c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_PSA_SPEED_DUMMY = LVM_MAXENUM 2142c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent} LVM_PSA_DecaySpeed_en; 2152c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 2162c87e9c923b0362fabf8c97ff63997542394c428Eric Laurenttypedef enum 2172c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent{ 2182c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_PSA_OFF = 0, 2192c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_PSA_ON = 1, 2202c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_PSA_DUMMY = LVM_MAXENUM 2212c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent} LVM_PSA_Mode_en; 2222c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 2232c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Version information */ 2242c87e9c923b0362fabf8c97ff63997542394c428Eric Laurenttypedef struct 2252c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent{ 2262c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_CHAR *pVersionNumber; /* Pointer to the version number in the format X.YY.ZZ */ 2272c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_CHAR *pPlatform; /* Pointer to the library platform type */ 2282c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent} LVM_VersionInfo_st; 2292c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 2302c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 2312c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 2322c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 2332c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Structures */ 2342c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 2352c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 2362c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 2372c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Memory table containing the region definitions */ 2382c87e9c923b0362fabf8c97ff63997542394c428Eric Laurenttypedef struct 2392c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent{ 2402c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_MemoryRegion_st Region[LVM_NR_MEMORY_REGIONS]; /* One definition for each region */ 2412c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent} LVM_MemTab_t; 2422c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 2432c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* N-Band equaliser band definition */ 2442c87e9c923b0362fabf8c97ff63997542394c428Eric Laurenttypedef struct 2452c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent{ 2462c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_INT16 Gain; /* Band gain in dB */ 2472c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_UINT16 Frequency; /* Band centre frequency in Hz */ 2482c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_UINT16 QFactor; /* Band quality factor (x100) */ 2492c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent} LVM_EQNB_BandDef_t; 2502c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 2512c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 2522c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Headroom band definition */ 2532c87e9c923b0362fabf8c97ff63997542394c428Eric Laurenttypedef struct 2542c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent{ 2552c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_UINT16 Limit_Low; /* Low frequency limit of the band in Hertz */ 2562c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_UINT16 Limit_High; /* High frequency limit of the band in Hertz */ 2572c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_INT16 Headroom_Offset; /* Headroom = biggest band gain - Headroom_Offset */ 2582c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent} LVM_HeadroomBandDef_t; 2592c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 2602c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 2612c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Control Parameter structure */ 2622c87e9c923b0362fabf8c97ff63997542394c428Eric Laurenttypedef struct 2632c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent{ 2642c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent /* General parameters */ 2652c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_Mode_en OperatingMode; /* Bundle operating mode On/Bypass */ 2662c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_Fs_en SampleRate; /* Sample rate */ 2672c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_Format_en SourceFormat; /* Input data format */ 2682c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_OutputDeviceType_en SpeakerType; /* Output device type */ 2692c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 2702c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent /* Concert Sound Virtualizer parameters*/ 2712c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_Mode_en VirtualizerOperatingMode; /* Virtualizer operating mode On/Off */ 2722c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_VirtualizerType_en VirtualizerType; /* Virtualizer type: ConcertSound */ 2732c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_UINT16 VirtualizerReverbLevel; /* Virtualizer reverb level in % */ 2742c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_INT16 CS_EffectLevel; /* Concert Sound effect level */ 2752c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 2762c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent /* N-Band Equaliser parameters */ 2772c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_EQNB_Mode_en EQNB_OperatingMode; /* N-Band Equaliser operating mode */ 2782c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_UINT16 EQNB_NBands; /* Number of bands */ 2792c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_EQNB_BandDef_t *pEQNB_BandDefinition; /* Pointer to equaliser definitions */ 2802c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 2812c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent /* Bass Enhancement parameters */ 2822c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_BE_Mode_en BE_OperatingMode; /* Bass Enhancement operating mode */ 2832c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_INT16 BE_EffectLevel; /* Bass Enhancement effect level */ 2842c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_BE_CentreFreq_en BE_CentreFreq; /* Bass Enhancement centre frequency */ 2852c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_BE_FilterSelect_en BE_HPF; /* Bass Enhancement high pass filter selector */ 2862c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 2872c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent /* Volume Control parameters */ 2882c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_INT16 VC_EffectLevel; /* Volume Control setting in dBs */ 2892c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_INT16 VC_Balance; /* Left Right Balance control in dB (-96 to 96 dB), -ve values reduce 2902c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent Right channel while +ve value reduces Left channel*/ 2912c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 2922c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent /* Treble Enhancement parameters */ 2932c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_TE_Mode_en TE_OperatingMode; /* Treble Enhancement On/Off */ 2942c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_INT16 TE_EffectLevel; /* Treble Enhancement gain dBs */ 2952c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 2962c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent /* Spectrum Analyzer parameters Control */ 2972c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_PSA_Mode_en PSA_Enable; 2982c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_PSA_DecaySpeed_en PSA_PeakDecayRate; /* Peak value decay rate*/ 2992c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 3002c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent} LVM_ControlParams_t; 3012c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 3022c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 3032c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Instance Parameter structure */ 3042c87e9c923b0362fabf8c97ff63997542394c428Eric Laurenttypedef struct 3052c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent{ 3062c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent /* General */ 3072c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_BufferMode_en BufferMode; /* Buffer management mode */ 3082c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_UINT16 MaxBlockSize; /* Maximum processing block size */ 3092c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 3102c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent /* N-Band Equaliser */ 3112c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_UINT16 EQNB_NumBands; /* Maximum number of equaliser bands */ 3122c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 3132c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent /* PSA */ 3142c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_PSA_Mode_en PSA_Included; /* Controls the instance memory allocation for PSA: ON/OFF */ 3152c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent} LVM_InstParams_t; 3162c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 3172c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Headroom management parameter structure */ 3182c87e9c923b0362fabf8c97ff63997542394c428Eric Laurenttypedef struct 3192c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent{ 3202c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_Headroom_Mode_en Headroom_OperatingMode; /* Headroom Control On/Off */ 3212c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_HeadroomBandDef_t *pHeadroomDefinition; /* Pointer to headroom bands definition */ 3222c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_UINT16 NHeadroomBands; /* Number of headroom bands */ 3232c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 3242c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent} LVM_HeadroomParams_t; 3252c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 3262c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 3272c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 3282c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Function Prototypes */ 3292c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 3302c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 3312c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 3322c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 3332c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 3342c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 3352c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* FUNCTION: LVM_GetVersionInfo */ 3362c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 3372c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* DESCRIPTION: */ 3382c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* This function is used to retrieve information about the library's version. */ 3392c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 3402c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* PARAMETERS: */ 3412c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* pVersion Pointer to an empty version info structure */ 3422c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 3432c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* RETURNS: */ 3442c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_SUCCESS Succeeded */ 3452c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_NULLADDRESS when pVersion is NULL */ 3462c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 3472c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* NOTES: */ 3482c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* 1. This function may be interrupted by the LVM_Process function */ 3492c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 3502c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 3512c87e9c923b0362fabf8c97ff63997542394c428Eric LaurentLVM_ReturnStatus_en LVM_GetVersionInfo(LVM_VersionInfo_st *pVersion); 3522c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 3532c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 3542c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 3552c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 3562c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* FUNCTION: LVM_GetMemoryTable */ 3572c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 3582c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* DESCRIPTION: */ 3592c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* This function is used for memory allocation and free. It can be called in */ 3602c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* two ways: */ 3612c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 3622c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* hInstance = NULL Returns the memory requirements */ 3632c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* hInstance = Instance handle Returns the memory requirements and */ 3642c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* allocated base addresses for the instance */ 3652c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 3662c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* When this function is called for memory allocation (hInstance=NULL) the memory */ 3672c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* base address pointers are NULL on return. */ 3682c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 3692c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* When the function is called for free (hInstance = Instance Handle) the memory */ 3702c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* table returns the allocated memory and base addresses used during initialisation. */ 3712c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 3722c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* PARAMETERS: */ 3732c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* hInstance Instance Handle */ 3742c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* pMemoryTable Pointer to an empty memory definition table */ 3752c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* pInstParams Pointer to the instance parameters */ 3762c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 3772c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* RETURNS: */ 3782c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_SUCCESS Succeeded */ 3792c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_NULLADDRESS When one of pMemoryTable or pInstParams is NULL */ 3802c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_OUTOFRANGE When any of the Instance parameters are out of range */ 3812c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 3822c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* NOTES: */ 3832c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* 1. This function may be interrupted by the LVM_Process function */ 3842c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 3852c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 3862c87e9c923b0362fabf8c97ff63997542394c428Eric LaurentLVM_ReturnStatus_en LVM_GetMemoryTable(LVM_Handle_t hInstance, 3872c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_MemTab_t *pMemoryTable, 3882c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_InstParams_t *pInstParams); 3892c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 3902c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 3912c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 3922c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 3932c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* FUNCTION: LVM_GetInstanceHandle */ 3942c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 3952c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* DESCRIPTION: */ 3962c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* This function is used to create a bundle instance. It returns the created instance */ 3972c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* handle through phInstance. All parameters are set to their default, inactive state. */ 3982c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 3992c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* PARAMETERS: */ 4002c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* phInstance pointer to the instance handle */ 4012c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* pMemoryTable Pointer to the memory definition table */ 4022c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* pInstParams Pointer to the instance parameters */ 4032c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 4042c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* RETURNS: */ 4052c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_SUCCESS Initialisation succeeded */ 4062c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_NULLADDRESS One or more memory has a NULL pointer */ 4072c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_OUTOFRANGE When any of the Instance parameters are out of range */ 4082c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 4092c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* NOTES: */ 4102c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* 1. This function must not be interrupted by the LVM_Process function */ 4112c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 4122c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 4132c87e9c923b0362fabf8c97ff63997542394c428Eric LaurentLVM_ReturnStatus_en LVM_GetInstanceHandle(LVM_Handle_t *phInstance, 4142c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_MemTab_t *pMemoryTable, 4152c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_InstParams_t *pInstParams); 4162c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 4172c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 4182c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 4192c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 4202c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* FUNCTION: LVM_ClearAudioBuffers */ 4212c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 4222c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* DESCRIPTION: */ 4232c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* This function is used to clear the internal audio buffers of the bundle. */ 4242c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 4252c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* PARAMETERS: */ 4262c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* hInstance Instance handle */ 4272c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 4282c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* RETURNS: */ 4292c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_SUCCESS Initialisation succeeded */ 4302c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_NULLADDRESS Instance memory has a NULL pointer */ 4312c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 4322c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* NOTES: */ 4332c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* 1. This function must not be interrupted by the LVM_Process function */ 4342c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 4352c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 4362c87e9c923b0362fabf8c97ff63997542394c428Eric LaurentLVM_ReturnStatus_en LVM_ClearAudioBuffers(LVM_Handle_t hInstance); 4372c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 4382c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 4392c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 4402c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 4412c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* FUNCTION: LVM_GetControlParameters */ 4422c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 4432c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* DESCRIPTION: */ 4442c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Request the LifeVibes module parameters. The current parameter set is returned */ 4452c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* via the parameter pointer. */ 4462c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 4472c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* PARAMETERS: */ 4482c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* hInstance Instance handle */ 4492c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* pParams Pointer to an empty parameter structure */ 4502c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 4512c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* RETURNS: */ 4522c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_SUCCESS Succeeded */ 4532c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_NULLADDRESS when any of hInstance or pParams is NULL */ 4542c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 4552c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* NOTES: */ 4562c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* 1. This function may be interrupted by the LVM_Process function */ 4572c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 4582c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 4592c87e9c923b0362fabf8c97ff63997542394c428Eric LaurentLVM_ReturnStatus_en LVM_GetControlParameters(LVM_Handle_t hInstance, 4602c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_ControlParams_t *pParams); 4612c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 4622c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 4632c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 4642c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 4652c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* FUNCTION: LVM_SetControlParameters */ 4662c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 4672c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* DESCRIPTION: */ 4682c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Sets or changes the LifeVibes module parameters. */ 4692c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 4702c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* PARAMETERS: */ 4712c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* hInstance Instance handle */ 4722c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* pParams Pointer to a parameter structure */ 4732c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 4742c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* RETURNS: */ 4752c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_SUCCESS Succeeded */ 4762c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_NULLADDRESS When hInstance, pParams or any control pointers are NULL */ 4772c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_OUTOFRANGE When any of the control parameters are out of range */ 4782c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 4792c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* NOTES: */ 4802c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* 1. This function may be interrupted by the LVM_Process function */ 4812c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 4822c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 4832c87e9c923b0362fabf8c97ff63997542394c428Eric LaurentLVM_ReturnStatus_en LVM_SetControlParameters(LVM_Handle_t hInstance, 4842c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_ControlParams_t *pParams); 4852c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 4862c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 4872c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 4882c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 4892c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* FUNCTION: LVM_Process */ 4902c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 4912c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* DESCRIPTION: */ 4922c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* Process function for the LifeVibes module. */ 4932c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 4942c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* PARAMETERS: */ 4952c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* hInstance Instance handle */ 4962c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* pInData Pointer to the input data */ 4972c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* pOutData Pointer to the output data */ 4982c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* NumSamples Number of samples in the input buffer */ 4992c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* AudioTime Audio Time of the current input data in milli-seconds */ 5002c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 5012c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* RETURNS: */ 5022c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_SUCCESS Succeeded */ 5032c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_INVALIDNUMSAMPLES When the NumSamples is not a valied multiple in unmanaged */ 5042c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* buffer mode */ 5052c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_ALIGNMENTERROR When either the input our output buffers are not 32-bit */ 5062c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* aligned in unmanaged mode */ 5072c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_NULLADDRESS When one of hInstance, pInData or pOutData is NULL */ 5082c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 5092c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* NOTES: */ 5102c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* 1. The input and output buffers must be 32-bit aligned */ 5112c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* 2. Number of samples is defined as follows: */ 5122c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* MONO the number of samples in the block */ 5132c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* MONOINSTEREO the number of sample pairs in the block */ 5142c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* STEREO the number of sample pairs in the block */ 5152c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 5162c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 5172c87e9c923b0362fabf8c97ff63997542394c428Eric LaurentLVM_ReturnStatus_en LVM_Process(LVM_Handle_t hInstance, 5182c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent const LVM_INT16 *pInData, 5192c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_INT16 *pOutData, 5202c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_UINT16 NumSamples, 5212c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_UINT32 AudioTime); 5222c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 5232c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 5242c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 5252c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 5262c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* FUNCTION: LVM_SetHeadroomParams */ 5272c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 5282c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* DESCRIPTION: */ 5292c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* This function is used to set the automatic headroom management parameters. */ 5302c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 5312c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* PARAMETERS: */ 5322c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* hInstance Instance Handle */ 5332c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* pHeadroomParams Pointer to headroom parameter structure */ 5342c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 5352c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* RETURNS: */ 5362c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_NULLADDRESS When hInstance or pHeadroomParams is NULL */ 5372c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_SUCCESS Succeeded */ 5382c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 5392c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* NOTES: */ 5402c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* 1. This function may be interrupted by the LVM_Process function */ 5412c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 5422c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 5432c87e9c923b0362fabf8c97ff63997542394c428Eric LaurentLVM_ReturnStatus_en LVM_SetHeadroomParams( LVM_Handle_t hInstance, 5442c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_HeadroomParams_t *pHeadroomParams); 5452c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 5462c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 5472c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 5482c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 5492c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* FUNCTION: LVM_GetHeadroomParams */ 5502c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 5512c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* DESCRIPTION: */ 5522c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* This function is used to get the automatic headroom management parameters. */ 5532c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 5542c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* PARAMETERS: */ 5552c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* hInstance Instance Handle */ 5562c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* pHeadroomParams Pointer to headroom parameter structure (output) */ 5572c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 5582c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* RETURNS: */ 5592c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_SUCCESS Succeeded */ 5602c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_NULLADDRESS When hInstance or pHeadroomParams are NULL */ 5612c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 5622c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* NOTES: */ 5632c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* 1. This function may be interrupted by the LVM_Process function */ 5642c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 5652c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 5662c87e9c923b0362fabf8c97ff63997542394c428Eric LaurentLVM_ReturnStatus_en LVM_GetHeadroomParams( LVM_Handle_t hInstance, 5672c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_HeadroomParams_t *pHeadroomParams); 5682c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 5692c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 5702c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 5712c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 5722c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* FUNCTION: LVM_GetSpectrum */ 5732c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 5742c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* DESCRIPTION: */ 5752c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* This function is used to retrieve Spectral information at a given Audio time */ 5762c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* for display usage */ 5772c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 5782c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* PARAMETERS: */ 5792c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* hInstance Instance Handle */ 5802c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* pCurrentPeaks Pointer to location where currents peaks are to be saved */ 5812c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* pPastPeaks Pointer to location where past peaks are to be saved */ 5822c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* pCentreFreqs Pointer to location where centre frequency of each band is */ 5832c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* to be saved */ 5842c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* AudioTime Audio time at which the spectral information is needed */ 5852c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 5862c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* RETURNS: */ 5872c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_SUCCESS Succeeded */ 5882c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_NULLADDRESS If any of input addresses are NULL */ 5892c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_WRONGAUDIOTIME Failure due to audio time error */ 5902c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 5912c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* NOTES: */ 5922c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* 1. This function may be interrupted by the LVM_Process function */ 5932c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 5942c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 5952c87e9c923b0362fabf8c97ff63997542394c428Eric LaurentLVM_ReturnStatus_en LVM_GetSpectrum( LVM_Handle_t hInstance, 5962c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_UINT8 *pCurrentPeaks, 5972c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_UINT8 *pPastPeaks, 5982c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_INT32 AudioTime); 5992c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 6002c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 6012c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 6022c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* FUNCTION: LVM_SetVolumeNoSmoothing */ 6032c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 6042c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* DESCRIPTION: */ 6052c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* This function is used to set output volume without any smoothing */ 6062c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 6072c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* PARAMETERS: */ 6082c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* hInstance Instance Handle */ 6092c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* pParams Control Parameters, only volume value is used here */ 6102c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 6112c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* RETURNS: */ 6122c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_SUCCESS Succeeded */ 6132c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_NULLADDRESS If any of input addresses are NULL */ 6142c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* LVM_OUTOFRANGE When any of the control parameters are out of range */ 6152c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 6162c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* NOTES: */ 6172c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* 1. This function may be interrupted by the LVM_Process function */ 6182c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/* */ 6192c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent/****************************************************************************************/ 6202c87e9c923b0362fabf8c97ff63997542394c428Eric LaurentLVM_ReturnStatus_en LVM_SetVolumeNoSmoothing( LVM_Handle_t hInstance, 6212c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent LVM_ControlParams_t *pParams); 6222c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 6232c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 6242c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent#ifdef __cplusplus 6252c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent} 6262c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent#endif /* __cplusplus */ 6272c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 6282c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent#endif /* __LVM_H__ */ 6292c87e9c923b0362fabf8c97ff63997542394c428Eric Laurent 630