1/*
2 * Copyright (C) 2004-2010 NXP Software
3 * Copyright (C) 2010 The Android Open Source Project
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 *      http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18/****************************************************************************************/
19/*                                                                                      */
20/*  Header file for the application layer interface of Concert Sound, Bass Enhancement, */
21/*  Equalizer, Power Spectrum Analyzer, Trebble Enhancement and volume management       */
22/*  bundle.                                                                             */
23/*                                                                                      */
24/*  This files includes all definitions, types, structures and function                 */
25/*  prototypes required by the calling layer. All other types, structures and           */
26/*  functions are private.                                                              */
27/*                                                                                      */
28/****************************************************************************************/
29/*                                                                                      */
30/*  Note: 1                                                                             */
31/*  =======                                                                             */
32/*  The algorithm can execute either with separate input and output buffers or with     */
33/*  a common buffer, i.e. the data is processed in-place.                               */
34/*                                                                                      */
35/****************************************************************************************/
36/*                                                                                      */
37/*  Note: 2                                                                             */
38/*  =======                                                                             */
39/*  Three data formats are support Stereo,Mono-In-Stereo and Mono. The data is          */
40/*  interleaved as follows:                                                             */
41/*                                                                                      */
42/*  Byte Offset         Stereo Input         Mono-In-Stereo Input       Mono Input      */
43/*  ===========         ============         ====================     ==============    */
44/*      0               Left Sample #1          Mono Sample #1        Mono Sample #1    */
45/*      2               Right Sample #1         Mono Sample #1        Mono Sample #2    */
46/*      4               Left Sample #2          Mono Sample #2        Mono Sample #3    */
47/*      6               Right Sample #2         Mono Sample #2        Mono Sample #4    */
48/*      .                      .                     .                     .            */
49/*      .                      .                     .                     .            */
50/*                                                                                      */
51/****************************************************************************************/
52
53#ifndef __LVM_H__
54#define __LVM_H__
55
56#ifdef __cplusplus
57extern "C" {
58#endif /* __cplusplus */
59
60
61/****************************************************************************************/
62/*                                                                                      */
63/*  Includes                                                                            */
64/*                                                                                      */
65/****************************************************************************************/
66
67#include "LVM_Types.h"
68
69
70/****************************************************************************************/
71/*                                                                                      */
72/*  Definitions                                                                         */
73/*                                                                                      */
74/****************************************************************************************/
75
76/* Memory table*/
77#define LVM_NR_MEMORY_REGIONS                 4     /* Number of memory regions */
78
79/* Concert Sound effect level presets */
80#define LVM_CS_EFFECT_NONE                    0     /* 0% effect, minimum value */
81#define LVM_CS_EFFECT_LOW                 16384     /* 50% effect */
82#define LVM_CS_EFFECT_MED                 24576     /* 75% effect */
83#define LVM_CS_EFFECT_HIGH                32767     /* 100% effect, maximum value */
84
85/* Treble enhancement */
86#define LVM_TE_LOW_MIPS                   32767
87
88/* Bass enhancement effect level presets */
89#define LVM_BE_0DB                            0     /* 0dB boost, no effect */
90#define LVM_BE_3DB                            3     /* +3dB boost */
91#define LVM_BE_6DB                            6     /* +6dB boost */
92#define LVM_BE_9DB                            9     /* +9dB boost */
93#define LVM_BE_12DB                          12     /* +12dB boost */
94#define LVM_BE_15DB                          15     /* +15dB boost */
95
96/* N-Band Equalizer */
97#define LVM_EQ_NBANDS                         5    /* Number of bands for equalizer */
98
99/* Headroom management */
100#define LVM_HEADROOM_MAX_NBANDS               5
101
102/****************************************************************************************/
103/*                                                                                      */
104/*  Types                                                                               */
105/*                                                                                      */
106/****************************************************************************************/
107
108/* Instance handle */
109typedef void *LVM_Handle_t;
110
111
112/* Status return values */
113typedef enum
114{
115    LVM_SUCCESS            = 0,                     /* Successful return from a routine */
116    LVM_ALIGNMENTERROR     = 1,                     /* Memory alignment error */
117    LVM_NULLADDRESS        = 2,                     /* NULL allocation address */
118    LVM_OUTOFRANGE         = 3,                     /* Out of range control parameter */
119    LVM_INVALIDNUMSAMPLES  = 4,                     /* Invalid number of samples */
120    LVM_WRONGAUDIOTIME     = 5,                     /* Wrong time value for audio time*/
121    LVM_ALGORITHMDISABLED  = 6,                     /* Algorithm is disabled*/
122    LVM_ALGORITHMPSA       = 7,                     /* Algorithm PSA returns an error */
123    LVM_RETURNSTATUS_DUMMY = LVM_MAXENUM
124} LVM_ReturnStatus_en;
125
126
127/* Buffer Management mode */
128typedef enum
129{
130    LVM_MANAGED_BUFFERS   = 0,
131    LVM_UNMANAGED_BUFFERS = 1,
132    LVM_BUFFERS_DUMMY     = LVM_MAXENUM
133} LVM_BufferMode_en;
134
135/* Output device type */
136typedef enum
137{
138    LVM_HEADPHONES             = 0,
139    LVM_EX_HEADPHONES          = 1,
140    LVM_SPEAKERTYPE_MAX        = LVM_MAXENUM
141} LVM_OutputDeviceType_en;
142
143/* Virtualizer mode selection*/
144typedef enum
145{
146    LVM_CONCERTSOUND       = 0,
147    LVM_VIRTUALIZERTYPE_DUMMY   = LVM_MAXENUM
148} LVM_VirtualizerType_en;
149
150/* N-Band Equaliser operating mode */
151typedef enum
152{
153    LVM_EQNB_OFF   = 0,
154    LVM_EQNB_ON    = 1,
155    LVM_EQNB_DUMMY = LVM_MAXENUM
156} LVM_EQNB_Mode_en;
157
158/* Bass Enhancement operating mode */
159typedef enum
160{
161    LVM_BE_OFF   = 0,
162    LVM_BE_ON    = 1,
163    LVM_BE_DUMMY = LVM_MAXENUM
164} LVM_BE_Mode_en;
165
166/* Bass Enhancement centre frequency selection control */
167typedef enum
168{
169    LVM_BE_CENTRE_55Hz  = 0,
170    LVM_BE_CENTRE_66Hz  = 1,
171    LVM_BE_CENTRE_78Hz  = 2,
172    LVM_BE_CENTRE_90Hz  = 3,
173    LVM_BE_CENTRE_DUMMY = LVM_MAXENUM
174} LVM_BE_CentreFreq_en;
175
176/* Bass Enhancement HPF selection control */
177typedef enum
178{
179    LVM_BE_HPF_OFF   = 0,
180    LVM_BE_HPF_ON    = 1,
181    LVM_BE_HPF_DUMMY = LVM_MAXENUM
182} LVM_BE_FilterSelect_en;
183
184/* Volume Control operating mode */
185typedef enum
186{
187    LVM_VC_OFF   = 0,
188    LVM_VC_ON    = 1,
189    LVM_VC_DUMMY = LVM_MAXENUM
190} LVM_VC_Mode_en;
191
192/* Treble Enhancement operating mode */
193typedef enum
194{
195    LVM_TE_OFF   = 0,
196    LVM_TE_ON    = 1,
197    LVM_TE_DUMMY = LVM_MAXENUM
198} LVM_TE_Mode_en;
199
200/* Headroom management operating mode */
201typedef enum
202{
203    LVM_HEADROOM_OFF   = 0,
204    LVM_HEADROOM_ON    = 1,
205    LVM_Headroom_DUMMY = LVM_MAXENUM
206} LVM_Headroom_Mode_en;
207
208typedef enum
209{
210    LVM_PSA_SPEED_SLOW,                                  /* Peak decaying at slow speed */
211    LVM_PSA_SPEED_MEDIUM,                                /* Peak decaying at medium speed */
212    LVM_PSA_SPEED_FAST,                                  /* Peak decaying at fast speed */
213    LVM_PSA_SPEED_DUMMY = LVM_MAXENUM
214} LVM_PSA_DecaySpeed_en;
215
216typedef enum
217{
218    LVM_PSA_OFF   = 0,
219    LVM_PSA_ON    = 1,
220    LVM_PSA_DUMMY = LVM_MAXENUM
221} LVM_PSA_Mode_en;
222
223/* Version information */
224typedef struct
225{
226    LVM_CHAR                    *pVersionNumber;        /* Pointer to the version number in the format X.YY.ZZ */
227    LVM_CHAR                    *pPlatform;             /* Pointer to the library platform type */
228} LVM_VersionInfo_st;
229
230
231/****************************************************************************************/
232/*                                                                                      */
233/*  Structures                                                                          */
234/*                                                                                      */
235/****************************************************************************************/
236
237/* Memory table containing the region definitions */
238typedef struct
239{
240    LVM_MemoryRegion_st         Region[LVM_NR_MEMORY_REGIONS];  /* One definition for each region */
241} LVM_MemTab_t;
242
243/* N-Band equaliser band definition */
244typedef struct
245{
246    LVM_INT16                   Gain;                   /* Band gain in dB */
247    LVM_UINT16                  Frequency;              /* Band centre frequency in Hz */
248    LVM_UINT16                  QFactor;                /* Band quality factor (x100) */
249} LVM_EQNB_BandDef_t;
250
251
252/* Headroom band definition */
253typedef struct
254{
255    LVM_UINT16                  Limit_Low;              /* Low frequency limit of the band in Hertz */
256    LVM_UINT16                  Limit_High;             /* High frequency limit of the band in Hertz */
257    LVM_INT16                   Headroom_Offset;        /* Headroom = biggest band gain - Headroom_Offset */
258} LVM_HeadroomBandDef_t;
259
260
261/* Control Parameter structure */
262typedef struct
263{
264    /* General parameters */
265    LVM_Mode_en                 OperatingMode;          /* Bundle operating mode On/Bypass */
266    LVM_Fs_en                   SampleRate;             /* Sample rate */
267    LVM_Format_en               SourceFormat;           /* Input data format */
268    LVM_OutputDeviceType_en     SpeakerType;            /* Output device type */
269
270    /* Concert Sound Virtualizer parameters*/
271    LVM_Mode_en                 VirtualizerOperatingMode; /* Virtualizer operating mode On/Off */
272    LVM_VirtualizerType_en      VirtualizerType;          /* Virtualizer type: ConcertSound */
273    LVM_UINT16                  VirtualizerReverbLevel;   /* Virtualizer reverb level in % */
274    LVM_INT16                   CS_EffectLevel;           /* Concert Sound effect level */
275
276    /* N-Band Equaliser parameters */
277    LVM_EQNB_Mode_en            EQNB_OperatingMode;     /* N-Band Equaliser operating mode */
278    LVM_UINT16                  EQNB_NBands;            /* Number of bands */
279    LVM_EQNB_BandDef_t          *pEQNB_BandDefinition;  /* Pointer to equaliser definitions */
280
281    /* Bass Enhancement parameters */
282    LVM_BE_Mode_en              BE_OperatingMode;       /* Bass Enhancement operating mode */
283    LVM_INT16                   BE_EffectLevel;         /* Bass Enhancement effect level */
284    LVM_BE_CentreFreq_en        BE_CentreFreq;          /* Bass Enhancement centre frequency */
285    LVM_BE_FilterSelect_en      BE_HPF;                 /* Bass Enhancement high pass filter selector */
286
287    /* Volume Control parameters */
288    LVM_INT16                   VC_EffectLevel;         /* Volume Control setting in dBs */
289    LVM_INT16                   VC_Balance;             /* Left Right Balance control in dB (-96 to 96 dB), -ve values reduce
290                                                           Right channel while +ve value reduces Left channel*/
291
292    /* Treble Enhancement parameters */
293    LVM_TE_Mode_en              TE_OperatingMode;       /* Treble Enhancement On/Off */
294    LVM_INT16                   TE_EffectLevel;         /* Treble Enhancement gain dBs */
295
296    /* Spectrum Analyzer parameters Control */
297    LVM_PSA_Mode_en             PSA_Enable;
298    LVM_PSA_DecaySpeed_en       PSA_PeakDecayRate;      /* Peak value decay rate*/
299
300} LVM_ControlParams_t;
301
302
303/* Instance Parameter structure */
304typedef struct
305{
306    /* General */
307    LVM_BufferMode_en           BufferMode;             /* Buffer management mode */
308    LVM_UINT16                  MaxBlockSize;           /* Maximum processing block size */
309
310    /* N-Band Equaliser */
311    LVM_UINT16                  EQNB_NumBands;          /* Maximum number of equaliser bands */
312
313    /* PSA */
314    LVM_PSA_Mode_en             PSA_Included;            /* Controls the instance memory allocation for PSA: ON/OFF */
315} LVM_InstParams_t;
316
317/* Headroom management parameter structure */
318typedef struct
319{
320    LVM_Headroom_Mode_en        Headroom_OperatingMode; /* Headroom Control On/Off */
321    LVM_HeadroomBandDef_t       *pHeadroomDefinition;   /* Pointer to headroom bands definition */
322    LVM_UINT16                  NHeadroomBands;         /* Number of headroom bands */
323
324} LVM_HeadroomParams_t;
325
326/****************************************************************************************/
327/*                                                                                      */
328/*  Function Prototypes                                                                 */
329/*                                                                                      */
330/****************************************************************************************/
331
332
333/****************************************************************************************/
334/*                                                                                      */
335/* FUNCTION:                LVM_GetVersionInfo                                          */
336/*                                                                                      */
337/* DESCRIPTION:                                                                         */
338/*  This function is used to retrieve information about the library's version.          */
339/*                                                                                      */
340/* PARAMETERS:                                                                          */
341/*  pVersion                Pointer to an empty version info structure                  */
342/*                                                                                      */
343/* RETURNS:                                                                             */
344/*  LVM_SUCCESS             Succeeded                                                   */
345/*  LVM_NULLADDRESS         when pVersion is NULL                                       */
346/*                                                                                      */
347/* NOTES:                                                                               */
348/*  1.  This function may be interrupted by the LVM_Process function                    */
349/*                                                                                      */
350/****************************************************************************************/
351LVM_ReturnStatus_en LVM_GetVersionInfo(LVM_VersionInfo_st  *pVersion);
352
353
354/****************************************************************************************/
355/*                                                                                      */
356/* FUNCTION:                LVM_GetMemoryTable                                          */
357/*                                                                                      */
358/* DESCRIPTION:                                                                         */
359/*  This function is used for memory allocation and free. It can be called in           */
360/*  two ways:                                                                           */
361/*                                                                                      */
362/*      hInstance = NULL                Returns the memory requirements                 */
363/*      hInstance = Instance handle     Returns the memory requirements and             */
364/*                                      allocated base addresses for the instance       */
365/*                                                                                      */
366/*  When this function is called for memory allocation (hInstance=NULL) the memory      */
367/*  base address pointers are NULL on return.                                           */
368/*                                                                                      */
369/*  When the function is called for free (hInstance = Instance Handle) the memory       */
370/*  table returns the allocated memory and base addresses used during initialisation.   */
371/*                                                                                      */
372/* PARAMETERS:                                                                          */
373/*  hInstance               Instance Handle                                             */
374/*  pMemoryTable            Pointer to an empty memory definition table                 */
375/*  pInstParams             Pointer to the instance parameters                          */
376/*                                                                                      */
377/* RETURNS:                                                                             */
378/*  LVM_SUCCESS             Succeeded                                                   */
379/*  LVM_NULLADDRESS         When one of pMemoryTable or pInstParams is NULL             */
380/*  LVM_OUTOFRANGE          When any of the Instance parameters are out of range        */
381/*                                                                                      */
382/* NOTES:                                                                               */
383/*  1.  This function may be interrupted by the LVM_Process function                    */
384/*                                                                                      */
385/****************************************************************************************/
386LVM_ReturnStatus_en LVM_GetMemoryTable(LVM_Handle_t         hInstance,
387                                       LVM_MemTab_t         *pMemoryTable,
388                                       LVM_InstParams_t     *pInstParams);
389
390
391/****************************************************************************************/
392/*                                                                                      */
393/* FUNCTION:                LVM_GetInstanceHandle                                       */
394/*                                                                                      */
395/* DESCRIPTION:                                                                         */
396/*  This function is used to create a bundle instance. It returns the created instance  */
397/*  handle through phInstance. All parameters are set to their default, inactive state. */
398/*                                                                                      */
399/* PARAMETERS:                                                                          */
400/*  phInstance              pointer to the instance handle                              */
401/*  pMemoryTable            Pointer to the memory definition table                      */
402/*  pInstParams             Pointer to the instance parameters                          */
403/*                                                                                      */
404/* RETURNS:                                                                             */
405/*  LVM_SUCCESS             Initialisation succeeded                                    */
406/*  LVM_NULLADDRESS         One or more memory has a NULL pointer                       */
407/*  LVM_OUTOFRANGE          When any of the Instance parameters are out of range        */
408/*                                                                                      */
409/* NOTES:                                                                               */
410/*  1. This function must not be interrupted by the LVM_Process function                */
411/*                                                                                      */
412/****************************************************************************************/
413LVM_ReturnStatus_en LVM_GetInstanceHandle(LVM_Handle_t        *phInstance,
414                                          LVM_MemTab_t        *pMemoryTable,
415                                          LVM_InstParams_t    *pInstParams);
416
417
418/****************************************************************************************/
419/*                                                                                      */
420/* FUNCTION:                LVM_ClearAudioBuffers                                       */
421/*                                                                                      */
422/* DESCRIPTION:                                                                         */
423/*  This function is used to clear the internal audio buffers of the bundle.            */
424/*                                                                                      */
425/* PARAMETERS:                                                                          */
426/*  hInstance               Instance handle                                             */
427/*                                                                                      */
428/* RETURNS:                                                                             */
429/*  LVM_SUCCESS             Initialisation succeeded                                    */
430/*  LVM_NULLADDRESS         Instance memory has a NULL pointer                          */
431/*                                                                                      */
432/* NOTES:                                                                               */
433/*  1. This function must not be interrupted by the LVM_Process function                */
434/*                                                                                      */
435/****************************************************************************************/
436LVM_ReturnStatus_en LVM_ClearAudioBuffers(LVM_Handle_t  hInstance);
437
438
439/****************************************************************************************/
440/*                                                                                      */
441/* FUNCTION:                 LVM_GetControlParameters                                   */
442/*                                                                                      */
443/* DESCRIPTION:                                                                         */
444/*  Request the LifeVibes module parameters. The current parameter set is returned      */
445/*  via the parameter pointer.                                                          */
446/*                                                                                      */
447/* PARAMETERS:                                                                          */
448/*  hInstance                Instance handle                                            */
449/*  pParams                  Pointer to an empty parameter structure                    */
450/*                                                                                      */
451/* RETURNS:                                                                             */
452/*  LVM_SUCCESS             Succeeded                                                   */
453/*  LVM_NULLADDRESS         when any of hInstance or pParams is NULL                    */
454/*                                                                                      */
455/* NOTES:                                                                               */
456/*  1.  This function may be interrupted by the LVM_Process function                    */
457/*                                                                                      */
458/****************************************************************************************/
459LVM_ReturnStatus_en LVM_GetControlParameters(LVM_Handle_t           hInstance,
460                                             LVM_ControlParams_t    *pParams);
461
462
463/****************************************************************************************/
464/*                                                                                      */
465/* FUNCTION:                LVM_SetControlParameters                                    */
466/*                                                                                      */
467/* DESCRIPTION:                                                                         */
468/*  Sets or changes the LifeVibes module parameters.                                    */
469/*                                                                                      */
470/* PARAMETERS:                                                                          */
471/*  hInstance               Instance handle                                             */
472/*  pParams                 Pointer to a parameter structure                            */
473/*                                                                                      */
474/* RETURNS:                                                                             */
475/*  LVM_SUCCESS             Succeeded                                                   */
476/*  LVM_NULLADDRESS         When hInstance, pParams or any control pointers are NULL    */
477/*  LVM_OUTOFRANGE          When any of the control parameters are out of range         */
478/*                                                                                      */
479/* NOTES:                                                                               */
480/*  1.  This function may be interrupted by the LVM_Process function                    */
481/*                                                                                      */
482/****************************************************************************************/
483LVM_ReturnStatus_en LVM_SetControlParameters(LVM_Handle_t           hInstance,
484                                             LVM_ControlParams_t    *pParams);
485
486
487/****************************************************************************************/
488/*                                                                                      */
489/* FUNCTION:                LVM_Process                                                 */
490/*                                                                                      */
491/* DESCRIPTION:                                                                         */
492/*  Process function for the LifeVibes module.                                          */
493/*                                                                                      */
494/* PARAMETERS:                                                                          */
495/*  hInstance               Instance handle                                             */
496/*  pInData                 Pointer to the input data                                   */
497/*  pOutData                Pointer to the output data                                  */
498/*  NumSamples              Number of samples in the input buffer                       */
499/*  AudioTime               Audio Time of the current input data in milli-seconds       */
500/*                                                                                      */
501/* RETURNS:                                                                             */
502/*  LVM_SUCCESS            Succeeded                                                    */
503/*  LVM_INVALIDNUMSAMPLES  When the NumSamples is not a valied multiple in unmanaged    */
504/*                         buffer mode                                                  */
505/*  LVM_ALIGNMENTERROR     When either the input our output buffers are not 32-bit      */
506/*                         aligned in unmanaged mode                                    */
507/*  LVM_NULLADDRESS        When one of hInstance, pInData or pOutData is NULL           */
508/*                                                                                      */
509/* NOTES:                                                                               */
510/*  1. The input and output buffers must be 32-bit aligned                              */
511/*  2. Number of samples is defined as follows:                                         */
512/*      MONO                the number of samples in the block                          */
513/*      MONOINSTEREO        the number of sample pairs in the block                     */
514/*      STEREO              the number of sample pairs in the block                     */
515/*                                                                                      */
516/****************************************************************************************/
517LVM_ReturnStatus_en LVM_Process(LVM_Handle_t                hInstance,
518                                const LVM_INT16             *pInData,
519                                LVM_INT16                   *pOutData,
520                                LVM_UINT16                  NumSamples,
521                                LVM_UINT32                  AudioTime);
522
523
524/****************************************************************************************/
525/*                                                                                      */
526/* FUNCTION:                LVM_SetHeadroomParams                                       */
527/*                                                                                      */
528/* DESCRIPTION:                                                                         */
529/*  This function is used to set the automatic headroom management parameters.          */
530/*                                                                                      */
531/* PARAMETERS:                                                                          */
532/*  hInstance               Instance Handle                                             */
533/*  pHeadroomParams         Pointer to headroom parameter structure                     */
534/*                                                                                      */
535/* RETURNS:                                                                             */
536/*  LVM_NULLADDRESS         When hInstance or pHeadroomParams is NULL                   */
537/*  LVM_SUCCESS             Succeeded                                                   */
538/*                                                                                      */
539/* NOTES:                                                                               */
540/*  1.  This function may be interrupted by the LVM_Process function                    */
541/*                                                                                      */
542/****************************************************************************************/
543LVM_ReturnStatus_en LVM_SetHeadroomParams(  LVM_Handle_t            hInstance,
544                                            LVM_HeadroomParams_t    *pHeadroomParams);
545
546
547/****************************************************************************************/
548/*                                                                                      */
549/* FUNCTION:                LVM_GetHeadroomParams                                       */
550/*                                                                                      */
551/* DESCRIPTION:                                                                         */
552/*  This function is used to get the automatic headroom management parameters.          */
553/*                                                                                      */
554/* PARAMETERS:                                                                          */
555/*  hInstance               Instance Handle                                             */
556/*  pHeadroomParams         Pointer to headroom parameter structure (output)            */
557/*                                                                                      */
558/* RETURNS:                                                                             */
559/*  LVM_SUCCESS             Succeeded                                                   */
560/*  LVM_NULLADDRESS         When hInstance or pHeadroomParams are NULL                  */
561/*                                                                                      */
562/* NOTES:                                                                               */
563/*  1.  This function may be interrupted by the LVM_Process function                    */
564/*                                                                                      */
565/****************************************************************************************/
566LVM_ReturnStatus_en LVM_GetHeadroomParams(  LVM_Handle_t            hInstance,
567                                            LVM_HeadroomParams_t    *pHeadroomParams);
568
569
570/****************************************************************************************/
571/*                                                                                      */
572/* FUNCTION:                LVM_GetSpectrum                                             */
573/*                                                                                      */
574/* DESCRIPTION:                                                                         */
575/* This function is used to retrieve Spectral information at a given Audio time         */
576/* for display usage                                                                    */
577/*                                                                                      */
578/* PARAMETERS:                                                                          */
579/*  hInstance               Instance Handle                                             */
580/*  pCurrentPeaks           Pointer to location where currents peaks are to be saved    */
581/*  pPastPeaks              Pointer to location where past peaks are to be saved        */
582/*  pCentreFreqs            Pointer to location where centre frequency of each band is  */
583/*                          to be saved                                                 */
584/*  AudioTime               Audio time at which the spectral information is needed      */
585/*                                                                                      */
586/* RETURNS:                                                                             */
587/*  LVM_SUCCESS             Succeeded                                                   */
588/*  LVM_NULLADDRESS         If any of input addresses are NULL                          */
589/*  LVM_WRONGAUDIOTIME      Failure due to audio time error                             */
590/*                                                                                      */
591/* NOTES:                                                                               */
592/*  1. This function may be interrupted by the LVM_Process function                     */
593/*                                                                                      */
594/****************************************************************************************/
595LVM_ReturnStatus_en LVM_GetSpectrum( LVM_Handle_t            hInstance,
596                                     LVM_UINT8               *pCurrentPeaks,
597                                     LVM_UINT8               *pPastPeaks,
598                                     LVM_INT32               AudioTime);
599
600/****************************************************************************************/
601/*                                                                                      */
602/* FUNCTION:                LVM_SetVolumeNoSmoothing                                    */
603/*                                                                                      */
604/* DESCRIPTION:                                                                         */
605/* This function is used to set output volume without any smoothing                     */
606/*                                                                                      */
607/* PARAMETERS:                                                                          */
608/*  hInstance               Instance Handle                                             */
609/*  pParams                 Control Parameters, only volume value is used here          */
610/*                                                                                      */
611/* RETURNS:                                                                             */
612/*  LVM_SUCCESS             Succeeded                                                   */
613/*  LVM_NULLADDRESS         If any of input addresses are NULL                          */
614/*  LVM_OUTOFRANGE          When any of the control parameters are out of range         */
615/*                                                                                      */
616/* NOTES:                                                                               */
617/*  1. This function may be interrupted by the LVM_Process function                     */
618/*                                                                                      */
619/****************************************************************************************/
620LVM_ReturnStatus_en LVM_SetVolumeNoSmoothing( LVM_Handle_t           hInstance,
621                                              LVM_ControlParams_t    *pParams);
622
623
624#ifdef __cplusplus
625}
626#endif /* __cplusplus */
627
628#endif      /* __LVM_H__ */
629
630