• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
From2iToMono_Float(const LVM_FLOAT * src,LVM_FLOAT * dst,LVM_INT16 n)24 void From2iToMono_Float(const LVM_FLOAT* src, LVM_FLOAT* dst, LVM_INT16 n) {
25     LVM_INT16 ii;
26     LVM_FLOAT Temp;
27 
28     for (ii = n; ii != 0; ii--) {
29         Temp = (*src);
30         src++;
31 
32         Temp += (*src);
33         src++;
34 
35         *dst = Temp / 2.0f;
36         dst++;
37     }
38 
39     return;
40 }
41 /*
42  * FUNCTION:       FromMcToMono_Float
43  *
44  * DESCRIPTION:
45  *  Creates a mono stream from a multichannel input taking the avergae of
46  *  sample values of all channels
47  *
48  * PARAMETERS:
49  *  src            Source
50  *  dst            Destination
51  *  NrFrames       Number of frames
52  *  NrChannels     Number of channels
53  *
54  * RETURNS:
55  *  void
56  *
57  */
FromMcToMono_Float(const LVM_FLOAT * src,LVM_FLOAT * dst,LVM_INT16 NrFrames,LVM_INT16 NrChannels)58 void FromMcToMono_Float(const LVM_FLOAT* src, LVM_FLOAT* dst, LVM_INT16 NrFrames,
59                         LVM_INT16 NrChannels) {
60     LVM_INT16 ii, jj;
61     LVM_FLOAT Temp;
62 
63     for (ii = NrFrames; ii != 0; ii--) {
64         Temp = 0.0f;
65         for (jj = NrChannels; jj != 0; jj--) {
66             Temp += (*src);
67             src++;
68         }
69         *dst = Temp / NrChannels;
70         dst++;
71     }
72 
73     return;
74 }
75