source: roaraudio/libroardsp/midside.c @ 3329:d939b3aedbc5

Last change on this file since 3329:d939b3aedbc5 was 1628:18e11dc050c0, checked in by phi, 15 years ago

added a lot code, should work

File size: 2.8 KB
Line 
1//midside.c:
2
3/*
4 *      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2009
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, 675 Mass Ave, Cambridge, MA 02139, USA.
22 *
23 */
24
25#include "libroardsp.h"
26
27int roar_conv_s2ms_8      (void * out, void * in, int samples) {
28 char * ip = in;
29 char * op = out;
30 register int i;
31 register char mid;
32 register char side;
33
34 for (i = 0; i < samples; i += 2) {
35  mid     = (ip[i] + ip[i+1])/2;
36  side    = (ip[i] - ip[i+1])/2;
37  op[i  ] = mid;
38  op[i+1] = side;
39 }
40
41 return 0;
42}
43
44int roar_conv_s2ms_16     (void * out, void * in, int samples) {
45 int16_t * ip = in;
46 int16_t * op = out;
47 register int i;
48 register int16_t mid;
49 register int16_t side;
50
51 for (i = 0; i < samples; i += 2) {
52  mid     = (ip[i] + ip[i+1])/2;
53  side    = (ip[i] - ip[i+1])/2;
54  op[i  ] = mid;
55  op[i+1] = side;
56 }
57
58 return 0;
59}
60
61int roar_conv_s2ms_32     (void * out, void * in, int samples) {
62 int32_t * ip = in;
63 int32_t * op = out;
64 register int i;
65 register int32_t mid;
66 register int32_t side;
67
68 for (i = 0; i < samples; i += 2) {
69  mid     = (ip[i] + ip[i+1])/2;
70  side    = (ip[i] - ip[i+1])/2;
71  op[i  ] = mid;
72  op[i+1] = side;
73 }
74
75 return 0;
76}
77
78int roar_conv_ms2s_8      (void * out, void * in, int samples) {
79 char * ip = in;
80 char * op = out;
81 register int i;
82 register char mid;
83 register char side;
84
85 for (i = 0; i < samples; i += 2) {
86  mid     = ip[i];
87  side    = ip[i+1];
88  op[i  ] = mid + side;
89  op[i+1] = mid - side;
90 }
91
92 return 0;
93}
94
95int roar_conv_ms2s_16     (void * out, void * in, int samples) {
96 int16_t * ip = in;
97 int16_t * op = out;
98 register int i;
99 register int16_t mid;
100 register int16_t side;
101
102 for (i = 0; i < samples; i += 2) {
103  mid     = ip[i];
104  side    = ip[i+1];
105  op[i  ] = mid + side;
106  op[i+1] = mid - side;
107 }
108
109 return 0;
110}
111
112int roar_conv_ms2s_32     (void * out, void * in, int samples) {
113 int32_t * ip = in;
114 int32_t * op = out;
115 register int i;
116 register int32_t mid;
117 register int32_t side;
118
119 for (i = 0; i < samples; i += 2) {
120  mid     = ip[i];
121  side    = ip[i+1];
122  op[i  ] = mid + side;
123  op[i+1] = mid - side;
124 }
125
126 return 0;
127}
128
129
130//ll
Note: See TracBrowser for help on using the repository browser.