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 /* Includes */
21 /* */
22 /****************************************************************************************/
23 #include "LVREV_Private.h"
24 #include "VectorArithmetic.h"
25
26
27 /****************************************************************************************/
28 /* */
29 /* FUNCTION: LVREV_ClearAudioBuffers */
30 /* */
31 /* DESCRIPTION: */
32 /* This function is used to clear the internal audio buffers of the module. */
33 /* */
34 /* PARAMETERS: */
35 /* hInstance Instance handle */
36 /* */
37 /* RETURNS: */
38 /* LVREV_SUCCESS Initialisation succeeded */
39 /* LVREV_NULLADDRESS Instance is NULL */
40 /* */
41 /* NOTES: */
42 /* 1. This function must not be interrupted by the LVM_Process function */
43 /* */
44 /****************************************************************************************/
LVREV_ClearAudioBuffers(LVREV_Handle_t hInstance)45 LVREV_ReturnStatus_en LVREV_ClearAudioBuffers(LVREV_Handle_t hInstance)
46 {
47
48 LVREV_Instance_st *pLVREV_Private = (LVREV_Instance_st *)hInstance;
49
50
51 /*
52 * Check for error conditions
53 */
54 /* Check for NULL pointers */
55 if(hInstance == LVM_NULL)
56 {
57 return LVREV_NULLADDRESS;
58 }
59
60 /*
61 * Clear all filter tap data, delay-lines and other signal related data
62 */
63
64
65 LoadConst_32(0,
66 (void *)&pLVREV_Private->pFastData->HPTaps, /* Destination Cast to void: no dereferencing in function*/
67 2);
68 LoadConst_32(0,
69 (void *)&pLVREV_Private->pFastData->LPTaps, /* Destination Cast to void: no dereferencing in function*/
70 2);
71
72 if((LVM_UINT16)pLVREV_Private->InstanceParams.NumDelays == LVREV_DELAYLINES_4)
73 {
74 LoadConst_32(0, (LVM_INT32 *)&pLVREV_Private->pFastData->RevLPTaps[3], 2);
75 LoadConst_32(0, (LVM_INT32 *)&pLVREV_Private->pFastData->RevLPTaps[2], 2);
76 LoadConst_32(0, (LVM_INT32 *)&pLVREV_Private->pFastData->RevLPTaps[1], 2);
77 LoadConst_32(0, (LVM_INT32 *)&pLVREV_Private->pFastData->RevLPTaps[0], 2);
78
79 LoadConst_32(0,pLVREV_Private->pDelay_T[3], (LVM_INT16)LVREV_MAX_T3_DELAY);
80 LoadConst_32(0,pLVREV_Private->pDelay_T[2], (LVM_INT16)LVREV_MAX_T2_DELAY);
81 LoadConst_32(0,pLVREV_Private->pDelay_T[1], (LVM_INT16)LVREV_MAX_T1_DELAY);
82 LoadConst_32(0,pLVREV_Private->pDelay_T[0], (LVM_INT16)LVREV_MAX_T0_DELAY);
83
84 }
85
86 if((LVM_UINT16)pLVREV_Private->InstanceParams.NumDelays >= LVREV_DELAYLINES_2)
87 {
88 LoadConst_32(0, (LVM_INT32 *)&pLVREV_Private->pFastData->RevLPTaps[1], 2);
89 LoadConst_32(0, (LVM_INT32 *)&pLVREV_Private->pFastData->RevLPTaps[0], 2);
90
91 LoadConst_32(0,pLVREV_Private->pDelay_T[1], (LVM_INT16)LVREV_MAX_T1_DELAY);
92 LoadConst_32(0,pLVREV_Private->pDelay_T[0], (LVM_INT16)LVREV_MAX_T0_DELAY);
93 }
94
95 if((LVM_UINT16)pLVREV_Private->InstanceParams.NumDelays >= LVREV_DELAYLINES_1)
96 {
97 LoadConst_32(0, (LVM_INT32 *)&pLVREV_Private->pFastData->RevLPTaps[0], 2);
98 LoadConst_32(0,pLVREV_Private->pDelay_T[0], (LVM_INT16)LVREV_MAX_T0_DELAY);
99 }
100
101 return LVREV_SUCCESS;
102 }
103
104 /* End of file */
105