Home | History | Annotate | Download | only in src
      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 /****************************************************************************************/
     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