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