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