Mercurial > SDL_sound_CoreAudio
comparison decoders/timidity/output.c @ 199:2d887640d300
Initial add.
author | Ryan C. Gordon <icculus@icculus.org> |
---|---|
date | Fri, 04 Jan 2002 06:49:49 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
198:f9a752f41ab6 | 199:2d887640d300 |
---|---|
1 /* | |
2 | |
3 TiMidity -- Experimental MIDI to WAVE converter | |
4 Copyright (C) 1995 Tuukka Toivonen <toivonen@clinet.fi> | |
5 | |
6 This program is free software; you can redistribute it and/or modify | |
7 it under the terms of the GNU General Public License as published by | |
8 the Free Software Foundation; either version 2 of the License, or | |
9 (at your option) any later version. | |
10 | |
11 This program is distributed in the hope that it will be useful, | |
12 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 GNU General Public License for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with this program; if not, write to the Free Software | |
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
19 | |
20 output.c | |
21 | |
22 Audio output (to file / device) functions. | |
23 */ | |
24 | |
25 #if HAVE_CONFIG_H | |
26 # include <config.h> | |
27 #endif | |
28 | |
29 #include "SDL_sound.h" | |
30 | |
31 #define __SDL_SOUND_INTERNAL__ | |
32 #include "SDL_sound_internal.h" | |
33 | |
34 #include "options.h" | |
35 #include "output.h" | |
36 | |
37 /*****************************************************************/ | |
38 /* Some functions to convert signed 32-bit data to other formats */ | |
39 | |
40 void s32tos8(void *dp, Sint32 *lp, Sint32 c) | |
41 { | |
42 Sint8 *cp=(Sint8 *)(dp); | |
43 Sint32 l; | |
44 while (c--) | |
45 { | |
46 l=(*lp++)>>(32-8-GUARD_BITS); | |
47 if (l>127) l=127; | |
48 else if (l<-128) l=-128; | |
49 *cp++ = (Sint8) (l); | |
50 } | |
51 } | |
52 | |
53 void s32tou8(void *dp, Sint32 *lp, Sint32 c) | |
54 { | |
55 Uint8 *cp=(Uint8 *)(dp); | |
56 Sint32 l; | |
57 while (c--) | |
58 { | |
59 l=(*lp++)>>(32-8-GUARD_BITS); | |
60 if (l>127) l=127; | |
61 else if (l<-128) l=-128; | |
62 *cp++ = 0x80 ^ ((Uint8) l); | |
63 } | |
64 } | |
65 | |
66 void s32tos16(void *dp, Sint32 *lp, Sint32 c) | |
67 { | |
68 Sint16 *sp=(Sint16 *)(dp); | |
69 Sint32 l; | |
70 while (c--) | |
71 { | |
72 l=(*lp++)>>(32-16-GUARD_BITS); | |
73 if (l > 32767) l=32767; | |
74 else if (l<-32768) l=-32768; | |
75 *sp++ = (Sint16)(l); | |
76 } | |
77 } | |
78 | |
79 void s32tou16(void *dp, Sint32 *lp, Sint32 c) | |
80 { | |
81 Uint16 *sp=(Uint16 *)(dp); | |
82 Sint32 l; | |
83 while (c--) | |
84 { | |
85 l=(*lp++)>>(32-16-GUARD_BITS); | |
86 if (l > 32767) l=32767; | |
87 else if (l<-32768) l=-32768; | |
88 *sp++ = 0x8000 ^ (Uint16)(l); | |
89 } | |
90 } | |
91 | |
92 void s32tos16x(void *dp, Sint32 *lp, Sint32 c) | |
93 { | |
94 Sint16 *sp=(Sint16 *)(dp); | |
95 Sint32 l; | |
96 while (c--) | |
97 { | |
98 l=(*lp++)>>(32-16-GUARD_BITS); | |
99 if (l > 32767) l=32767; | |
100 else if (l<-32768) l=-32768; | |
101 *sp++ = SDL_Swap16((Sint16)(l)); | |
102 } | |
103 } | |
104 | |
105 void s32tou16x(void *dp, Sint32 *lp, Sint32 c) | |
106 { | |
107 Uint16 *sp=(Uint16 *)(dp); | |
108 Sint32 l; | |
109 while (c--) | |
110 { | |
111 l=(*lp++)>>(32-16-GUARD_BITS); | |
112 if (l > 32767) l=32767; | |
113 else if (l<-32768) l=-32768; | |
114 *sp++ = SDL_Swap16(0x8000 ^ (Uint16)(l)); | |
115 } | |
116 } |