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