source: roaraudio/libroardsp/midside.c @ 5381:430b1d26e12d

Last change on this file since 5381:430b1d26e12d was 5381:430b1d26e12d, checked in by phi, 12 years ago

updated copyright years

File size: 2.8 KB
Line 
1//midside.c:
2
3/*
4 *      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2009-2012
5 *
6 *  This file is part of libroardsp a part of RoarAudio,
7 *  a cross-platform sound system for both, home and professional use.
8 *  See README for details.
9 *
10 *  This file is free software; you can redistribute it and/or modify
11 *  it under the terms of the GNU General Public License version 3
12 *  as published by the Free Software Foundation.
13 *
14 *  libroardsp is distributed in the hope that it will be useful,
15 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
16 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 *  GNU General Public License for more details.
18 *
19 *  You should have received a copy of the GNU General Public License
20 *  along with this software; see the file COPYING.  If not, write to
21 *  the Free Software Foundation, 51 Franklin Street, Fifth Floor,
22 *  Boston, MA 02110-1301, USA.
23 *
24 */
25
26#include "libroardsp.h"
27
28int roar_conv_s2ms_8      (void * out, void * in, int samples) {
29 char * ip = in;
30 char * op = out;
31 register int i;
32 register char mid;
33 register char side;
34
35 for (i = 0; i < samples; i += 2) {
36  mid     = (ip[i] + ip[i+1])/2;
37  side    = (ip[i] - ip[i+1])/2;
38  op[i  ] = mid;
39  op[i+1] = side;
40 }
41
42 return 0;
43}
44
45int roar_conv_s2ms_16     (void * out, void * in, int samples) {
46 int16_t * ip = in;
47 int16_t * op = out;
48 register int i;
49 register int16_t mid;
50 register int16_t side;
51
52 for (i = 0; i < samples; i += 2) {
53  mid     = (ip[i] + ip[i+1])/2;
54  side    = (ip[i] - ip[i+1])/2;
55  op[i  ] = mid;
56  op[i+1] = side;
57 }
58
59 return 0;
60}
61
62int roar_conv_s2ms_32     (void * out, void * in, int samples) {
63 int32_t * ip = in;
64 int32_t * op = out;
65 register int i;
66 register int32_t mid;
67 register int32_t side;
68
69 for (i = 0; i < samples; i += 2) {
70  mid     = (ip[i] + ip[i+1])/2;
71  side    = (ip[i] - ip[i+1])/2;
72  op[i  ] = mid;
73  op[i+1] = side;
74 }
75
76 return 0;
77}
78
79int roar_conv_ms2s_8      (void * out, void * in, int samples) {
80 char * ip = in;
81 char * op = out;
82 register int i;
83 register char mid;
84 register char side;
85
86 for (i = 0; i < samples; i += 2) {
87  mid     = ip[i];
88  side    = ip[i+1];
89  op[i  ] = mid + side;
90  op[i+1] = mid - side;
91 }
92
93 return 0;
94}
95
96int roar_conv_ms2s_16     (void * out, void * in, int samples) {
97 int16_t * ip = in;
98 int16_t * op = out;
99 register int i;
100 register int16_t mid;
101 register int16_t side;
102
103 for (i = 0; i < samples; i += 2) {
104  mid     = ip[i];
105  side    = ip[i+1];
106  op[i  ] = mid + side;
107  op[i+1] = mid - side;
108 }
109
110 return 0;
111}
112
113int roar_conv_ms2s_32     (void * out, void * in, int samples) {
114 int32_t * ip = in;
115 int32_t * op = out;
116 register int i;
117 register int32_t mid;
118 register int32_t side;
119
120 for (i = 0; i < samples; i += 2) {
121  mid     = ip[i];
122  side    = ip[i+1];
123  op[i  ] = mid + side;
124  op[i+1] = mid - side;
125 }
126
127 return 0;
128}
129
130
131//ll
Note: See TracBrowser for help on using the repository browser.