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    INCLUDE FILES
     20 ***********************************************************************************/
     21 
     22 #include "VectorArithmetic.h"
     23 
     24 /**********************************************************************************
     25    FUNCTION DelayMix_16x16
     26 ***********************************************************************************/
     27 
     28 void DelayWrite_32(const LVM_INT32  *src,               /* Source 1, to be delayed */
     29                          LVM_INT32  *delay,             /* Delay buffer */
     30                          LVM_UINT16 size,               /* Delay size */
     31                          LVM_UINT16 *pOffset,           /* Delay offset */
     32                          LVM_INT16  n)                  /* Number of samples */
     33 {
     34     LVM_INT16   i;
     35     LVM_INT16   Offset  = (LVM_INT16)*pOffset;
     36 
     37     for (i=0; i<n; i++)
     38     {
     39         delay[Offset] = *src;
     40         Offset++;
     41         src++;
     42 
     43         /* Make the delay buffer a circular buffer */
     44         if (Offset >= size)
     45         {
     46             Offset = 0;
     47         }
     48     }
     49 
     50     /* Update the offset */
     51     *pOffset = (LVM_UINT16)Offset;
     52 
     53     return;
     54 }
     55 
     56 /**********************************************************************************/
     57 
     58