1c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*
2c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent * Copyright (C) 2004-2010 NXP Software
3c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent * Copyright (C) 2010 The Android Open Source Project
4c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent *
5c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent * Licensed under the Apache License, Version 2.0 (the "License");
6c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent * you may not use this file except in compliance with the License.
7c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent * You may obtain a copy of the License at
8c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent *
9c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent *      http://www.apache.org/licenses/LICENSE-2.0
10c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent *
11c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent * Unless required by applicable law or agreed to in writing, software
12c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent * distributed under the License is distributed on an "AS IS" BASIS,
13c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent * See the License for the specific language governing permissions and
15c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent * limitations under the License.
16c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent */
17c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
18c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/****************************************************************************************/
19c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
20c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  Header file for the application layer interface of the LVREV module                 */
21c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
22c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  This files includes all definitions, types, structures and function prototypes      */
23c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  required by the calling layer. All other types, structures and functions are        */
24c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  private.                                                                            */
25c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
26c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/****************************************************************************************/
27c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
28c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent#ifndef __LVREV_H__
29c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent#define __LVREV_H__
30c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
31c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent#ifdef __cplusplus
32c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurentextern "C" {
33c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent#endif /* __cplusplus */
34c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
35c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
36c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/****************************************************************************************/
37c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
38c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  Includes                                                                            */
39c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
40c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/****************************************************************************************/
41c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent#include "LVM_Types.h"
42c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
43c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
44c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/****************************************************************************************/
45c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
46c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  Definitions                                                                         */
47c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
48c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/****************************************************************************************/
49c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* General */
50c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent#define LVREV_BLOCKSIZE_MULTIPLE                1       /* Processing block size multiple */
51c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent#define LVREV_MAX_T60                        7000       /* Maximum decay time is 7000ms */
52c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
53c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* Memory table*/
54c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent#define LVREV_NR_MEMORY_REGIONS                 4       /* Number of memory regions */
55c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
56c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
57c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/****************************************************************************************/
58c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
59c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  Types                                                                               */
60c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
61c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/****************************************************************************************/
62c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* Instance handle */
63c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurenttypedef void *LVREV_Handle_t;
64c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
65c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
66c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* Status return values */
67c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurenttypedef enum
68c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent{
69c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    LVREV_SUCCESS            = 0,                       /* Successful return from a routine */
70c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    LVREV_NULLADDRESS        = 1,                       /* NULL allocation address */
71c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    LVREV_OUTOFRANGE         = 2,                       /* Out of range control parameter */
72c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    LVREV_INVALIDNUMSAMPLES  = 3,                       /* Invalid number of samples */
73c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    LVREV_RETURNSTATUS_DUMMY = LVM_MAXENUM
74c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent} LVREV_ReturnStatus_en;
75c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
76c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
77c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* Reverb delay lines */
78c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurenttypedef enum
79c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent{
80c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    LVREV_DELAYLINES_1     = 1,                         /* One delay line */
81c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    LVREV_DELAYLINES_2     = 2,                         /* Two delay lines */
82c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    LVREV_DELAYLINES_4     = 4,                         /* Four delay lines */
83c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    LVREV_DELAYLINES_DUMMY = LVM_MAXENUM
84c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent} LVREV_NumDelayLines_en;
85c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
86c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
87c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/****************************************************************************************/
88c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
89c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  Structures                                                                          */
90c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
91c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/****************************************************************************************/
92c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
93c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* Memory table containing the region definitions */
94c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurenttypedef struct
95c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent{
96c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    LVM_MemoryRegion_st        Region[LVREV_NR_MEMORY_REGIONS];  /* One definition for each region */
97c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent} LVREV_MemoryTable_st;
98c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
99c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
100c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* Control Parameter structure */
101c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurenttypedef struct
102c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent{
103c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    /* General parameters */
104c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    LVM_Mode_en                 OperatingMode;          /* Operating mode */
105c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    LVM_Fs_en                   SampleRate;             /* Sample rate */
106c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    LVM_Format_en               SourceFormat;           /* Source data format */
107c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
108c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    /* Parameters for REV */
109c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    LVM_UINT16                  Level;                  /* Level, 0 to 100 representing percentage of reverb */
110c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    LVM_UINT16                  LPF;                    /* Low pass filter, in Hz */
111c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    LVM_UINT16                  HPF;                    /* High pass filter, in Hz */
112c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    LVM_UINT16                  T60;                    /* Decay time constant, in ms */
113c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    LVM_UINT16                  Density;                /* Echo density, 0 to 100 for minimum to maximum density */
114c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    LVM_UINT16                  Damping;                /* Damping */
115c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    LVM_UINT16                  RoomSize;               /* Simulated room size, 1 to 100 for minimum to maximum size */
116c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
117c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent} LVREV_ControlParams_st;
118c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
119c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
120c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* Instance Parameter structure */
121c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurenttypedef struct
122c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent{
123c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    /* General */
124c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    LVM_UINT16                  MaxBlockSize;           /* Maximum processing block size */
125c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
126c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    /* Reverb */
127c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    LVM_Format_en               SourceFormat;           /* Source data formats to support */
128c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent    LVREV_NumDelayLines_en      NumDelays;              /* The number of delay lines, 1, 2 or 4 */
129c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
130c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent} LVREV_InstanceParams_st;
131c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
132c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
133c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/****************************************************************************************/
134c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
135c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  Function Prototypes                                                                 */
136c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
137c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/****************************************************************************************/
138c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
139c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/****************************************************************************************/
140c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
141c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* FUNCTION:                LVREV_GetMemoryTable                                        */
142c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
143c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* DESCRIPTION:                                                                         */
144c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  This function is used to obtain the LVREV module memory requirements to support     */
145c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  memory allocation. It can also be used to return the memory base address provided   */
146c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  during memory allocation to support freeing of memory when the LVREV module is no   */
147c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  longer required. It is called in two ways:                                          */
148c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
149c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  hInstance = NULL                Returns the memory requirements                     */
150c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  hInstance = Instance handle     Returns the memory requirements and allocated       */
151c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                  base addresses.                                     */
152c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
153c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  When this function is called with hInstance = NULL the memory base address pointers */
154c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  will be NULL on return.                                                             */
155c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
156c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  When the function is called for freeing memory, hInstance = Instance Handle the     */
157c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  memory table returns the allocated memory and base addresses used during            */
158c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  initialisation.                                                                     */
159c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
160c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* PARAMETERS:                                                                          */
161c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  hInstance               Instance Handle                                             */
162c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  pMemoryTable            Pointer to an empty memory table                            */
163c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  pInstanceParams         Pointer to the instance parameters                          */
164c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
165c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* RETURNS:                                                                             */
166c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  LVREV_SUCCESS           Succeeded                                                   */
167c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  LVREV_NULLADDRESS       When pMemoryTable is NULL                                   */
168c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  LVREV_NULLADDRESS       When requesting memory requirements and pInstanceParams     */
169c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                          is NULL                                                     */
170c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
171c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* NOTES:                                                                               */
172c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  1.  This function may be interrupted by the LVREV_Process function                  */
173c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
174c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/****************************************************************************************/
175c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric LaurentLVREV_ReturnStatus_en LVREV_GetMemoryTable(LVREV_Handle_t           hInstance,
176c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent                                           LVREV_MemoryTable_st     *pMemoryTable,
177c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent                                           LVREV_InstanceParams_st  *pInstanceParams);
178c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
179c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
180c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/****************************************************************************************/
181c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
182c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* FUNCTION:                LVREV_GetInstanceHandle                                     */
183c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
184c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* DESCRIPTION:                                                                         */
185c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  This function is used to create a LVREV module instance. It returns the created     */
186c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  instance handle through phInstance. All parameters are set to invalid values, the   */
187c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  LVREV_SetControlParameters function must be called with a set of valid control      */
188c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  parameters before the LVREV_Process function can be called.                         */
189c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
190c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  The memory allocation must be provided by the application by filling in the memory  */
191c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  region base addresses in the memory table before calling this function.             */
192c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
193c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* PARAMETERS:                                                                          */
194c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  phInstance              Pointer to the instance handle                              */
195c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  pMemoryTable            Pointer to the memory definition table                      */
196c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  pInstanceParams         Pointer to the instance parameters                          */
197c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
198c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* RETURNS:                                                                             */
199c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  LVREV_SUCCESS           Succeeded                                                   */
200c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  LVREV_NULLADDRESS       When phInstance or pMemoryTable or pInstanceParams is NULL  */
201c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  LVREV_NULLADDRESS       When one of the memory regions has a NULL pointer           */
202c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
203c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* NOTES:                                                                               */
204c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
205c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/****************************************************************************************/
206c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric LaurentLVREV_ReturnStatus_en LVREV_GetInstanceHandle(LVREV_Handle_t            *phInstance,
207c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent                                              LVREV_MemoryTable_st      *pMemoryTable,
208c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent                                              LVREV_InstanceParams_st   *pInstanceParams);
209c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
210c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
211c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/****************************************************************************************/
212c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
213c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* FUNCTION:                LVXX_GetControlParameters                                   */
214c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
215c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* DESCRIPTION:                                                                         */
216c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  Request the LVREV module control parameters. The current parameter set is returned  */
217c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  via the parameter pointer.                                                          */
218c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
219c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* PARAMETERS:                                                                          */
220c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  hInstance               Instance handle                                             */
221c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  pControlParams          Pointer to an empty parameter structure                     */
222c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
223c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* RETURNS:                                                                             */
224c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  LVREV_SUCCESS           Succeeded                                                   */
225c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  LVREV_NULLADDRESS       When hInstance or pControlParams is NULL                    */
226c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
227c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* NOTES:                                                                               */
228c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  1.  This function may be interrupted by the LVREV_Process function                  */
229c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
230c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/****************************************************************************************/
231c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric LaurentLVREV_ReturnStatus_en LVREV_GetControlParameters(LVREV_Handle_t           hInstance,
232c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent                                                 LVREV_ControlParams_st   *pControlParams);
233c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
234c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
235c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/****************************************************************************************/
236c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
237c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* FUNCTION:                LVREV_SetControlParameters                                  */
238c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
239c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* DESCRIPTION:                                                                         */
240c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  Sets or changes the LVREV module parameters.                                        */
241c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
242c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* PARAMETERS:                                                                          */
243c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  hInstance               Instance handle                                             */
244c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  pNewParams              Pointer to a parameter structure                            */
245c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
246c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* RETURNS:                                                                             */
247c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  LVREV_SUCCESS           Succeeded                                                   */
248c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  LVREV_NULLADDRESS       When hInstance or pNewParams is NULL                        */
249c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
250c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* NOTES:                                                                               */
251c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  1.  This function may be interrupted by the LVREV_Process function                  */
252c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
253c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/****************************************************************************************/
254c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric LaurentLVREV_ReturnStatus_en LVREV_SetControlParameters(LVREV_Handle_t           hInstance,
255c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent                                                 LVREV_ControlParams_st   *pNewParams);
256c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
257c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
258c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/****************************************************************************************/
259c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
260c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* FUNCTION:                LVREV_ClearAudioBuffers                                     */
261c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
262c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* DESCRIPTION:                                                                         */
263c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  This function is used to clear the internal audio buffers of the module.            */
264c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
265c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* PARAMETERS:                                                                          */
266c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  hInstance               Instance handle                                             */
267c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
268c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* RETURNS:                                                                             */
269c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  LVREV_SUCCESS          Initialisation succeeded                                     */
270c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  LVREV_NULLADDRESS      Instance is NULL                                             */
271c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
272c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* NOTES:                                                                               */
273c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  1. This function must not be interrupted by the LVREV_Process function              */
274c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
275c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/****************************************************************************************/
276c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric LaurentLVREV_ReturnStatus_en LVREV_ClearAudioBuffers(LVREV_Handle_t  hInstance);
277c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
278c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
279c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/****************************************************************************************/
280c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
281c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* FUNCTION:                LVREV_Process                                               */
282c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
283c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* DESCRIPTION:                                                                         */
284c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  Process function for the LVREV module.                                              */
285c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
286c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* PARAMETERS:                                                                          */
287c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  hInstance               Instance handle                                             */
288c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  pInData                 Pointer to the input data                                   */
289c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  pOutData                Pointer to the output data                                  */
290c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  NumSamples              Number of samples in the input buffer                       */
291c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
292c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* RETURNS:                                                                             */
293c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  LVREV_SUCCESS           Succeeded                                                   */
294c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  LVREV_INVALIDNUMSAMPLES NumSamples was larger than the maximum block size           */
295c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
296c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* NOTES:                                                                               */
297c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*  1. The input and output buffers must be 32-bit aligned                              */
298c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/*                                                                                      */
299c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/****************************************************************************************/
300c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric LaurentLVREV_ReturnStatus_en LVREV_Process(LVREV_Handle_t      hInstance,
301c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent                                    const LVM_INT32     *pInData,
302c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent                                    LVM_INT32           *pOutData,
303c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent                                    const LVM_UINT16          NumSamples);
304c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
305c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
306c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent#ifdef __cplusplus
307c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent}
308c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent#endif /* __cplusplus */
309c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
310c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent#endif      /* __LVREV_H__ */
311c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent
312c59c6fd7f859b4010d788db89b8d4d76bbb70e57Eric Laurent/* End of file */
313