LVREV_ClearAudioBuffers.c revision d918324d44aa48b3b064ea9b87d0c520c38f15a9
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/****************************************************************************************/
45LVREV_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