Skip to content

Latest commit

 

History

History
102 lines (88 loc) · 2.04 KB

output.c

File metadata and controls

102 lines (88 loc) · 2.04 KB
 
Oct 18, 2017
Oct 18, 2017
1
2
/*
Oct 21, 1999
Oct 21, 1999
3
4
5
6
TiMidity -- Experimental MIDI to WAVE converter
Copyright (C) 1995 Tuukka Toivonen <toivonen@clinet.fi>
This program is free software; you can redistribute it and/or modify
Dec 31, 2011
Dec 31, 2011
7
it under the terms of the Perl Artistic License, available in COPYING.
Oct 21, 1999
Oct 21, 1999
8
Oct 18, 2017
Oct 18, 2017
9
10
11
12
output.c
Audio output (to file / device) functions.
*/
Oct 21, 1999
Oct 21, 1999
13
Oct 18, 2017
Oct 18, 2017
14
15
#if HAVE_CONFIG_H
# include <config.h>
Oct 21, 1999
Oct 21, 1999
16
17
#endif
Oct 18, 2017
Oct 18, 2017
18
#include "SDL.h"
Oct 21, 1999
Oct 21, 1999
19
Oct 18, 2017
Oct 18, 2017
20
21
#include "options.h"
#include "output.h"
Oct 21, 1999
Oct 21, 1999
22
23
24
25
/*****************************************************************/
/* Some functions to convert signed 32-bit data to other formats */
Oct 18, 2017
Oct 18, 2017
26
void s32tos8(void *dp, Sint32 *lp, Sint32 c)
Oct 21, 1999
Oct 21, 1999
27
{
Oct 18, 2017
Oct 18, 2017
28
29
Sint8 *cp=(Sint8 *)(dp);
Sint32 l;
Oct 21, 1999
Oct 21, 1999
30
31
32
33
34
while (c--)
{
l=(*lp++)>>(32-8-GUARD_BITS);
if (l>127) l=127;
else if (l<-128) l=-128;
Oct 18, 2017
Oct 18, 2017
35
*cp++ = (Sint8) (l);
Oct 21, 1999
Oct 21, 1999
36
37
38
}
}
Oct 18, 2017
Oct 18, 2017
39
void s32tou8(void *dp, Sint32 *lp, Sint32 c)
Oct 21, 1999
Oct 21, 1999
40
{
Oct 18, 2017
Oct 18, 2017
41
42
Uint8 *cp=(Uint8 *)(dp);
Sint32 l;
Oct 21, 1999
Oct 21, 1999
43
44
45
46
47
while (c--)
{
l=(*lp++)>>(32-8-GUARD_BITS);
if (l>127) l=127;
else if (l<-128) l=-128;
Oct 18, 2017
Oct 18, 2017
48
*cp++ = 0x80 ^ ((Uint8) l);
Oct 21, 1999
Oct 21, 1999
49
50
51
}
}
Oct 18, 2017
Oct 18, 2017
52
void s32tos16(void *dp, Sint32 *lp, Sint32 c)
Oct 21, 1999
Oct 21, 1999
53
{
Oct 18, 2017
Oct 18, 2017
54
55
Sint16 *sp=(Sint16 *)(dp);
Sint32 l;
Oct 21, 1999
Oct 21, 1999
56
57
58
59
60
while (c--)
{
l=(*lp++)>>(32-16-GUARD_BITS);
if (l > 32767) l=32767;
else if (l<-32768) l=-32768;
Oct 18, 2017
Oct 18, 2017
61
*sp++ = (Sint16)(l);
Oct 21, 1999
Oct 21, 1999
62
63
64
}
}
Oct 18, 2017
Oct 18, 2017
65
void s32tou16(void *dp, Sint32 *lp, Sint32 c)
Oct 21, 1999
Oct 21, 1999
66
{
Oct 18, 2017
Oct 18, 2017
67
68
Uint16 *sp=(Uint16 *)(dp);
Sint32 l;
Oct 21, 1999
Oct 21, 1999
69
70
71
72
73
while (c--)
{
l=(*lp++)>>(32-16-GUARD_BITS);
if (l > 32767) l=32767;
else if (l<-32768) l=-32768;
Oct 18, 2017
Oct 18, 2017
74
*sp++ = 0x8000 ^ (Uint16)(l);
Oct 21, 1999
Oct 21, 1999
75
76
77
}
}
Oct 18, 2017
Oct 18, 2017
78
void s32tos16x(void *dp, Sint32 *lp, Sint32 c)
Oct 21, 1999
Oct 21, 1999
79
{
Oct 18, 2017
Oct 18, 2017
80
81
Sint16 *sp=(Sint16 *)(dp);
Sint32 l;
Oct 21, 1999
Oct 21, 1999
82
83
84
85
86
while (c--)
{
l=(*lp++)>>(32-16-GUARD_BITS);
if (l > 32767) l=32767;
else if (l<-32768) l=-32768;
Oct 18, 2017
Oct 18, 2017
87
*sp++ = SDL_Swap16((Sint16)(l));
Oct 21, 1999
Oct 21, 1999
88
89
90
}
}
Oct 18, 2017
Oct 18, 2017
91
void s32tou16x(void *dp, Sint32 *lp, Sint32 c)
Oct 21, 1999
Oct 21, 1999
92
{
Oct 18, 2017
Oct 18, 2017
93
94
Uint16 *sp=(Uint16 *)(dp);
Sint32 l;
Oct 21, 1999
Oct 21, 1999
95
96
97
98
99
while (c--)
{
l=(*lp++)>>(32-16-GUARD_BITS);
if (l > 32767) l=32767;
else if (l<-32768) l=-32768;
Oct 18, 2017
Oct 18, 2017
100
*sp++ = SDL_Swap16(0x8000 ^ (Uint16)(l));
Oct 21, 1999
Oct 21, 1999
101
102
}
}