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
DelayWrite_32(const LVM_INT32 * src,LVM_INT32 * delay,LVM_UINT16 size,LVM_UINT16 * pOffset,LVM_INT16 n)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