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