Mercurial > sdl-ios-xcode
annotate BUGS @ 942:41a59de7f2ed
Here are patches for SDL12 and SDL_mixer for 4 or 6 channel
surround sound on Linux using the Alsa driver. To use them, naturally
you need a sound card that will do 4 or 6 channels and probably also a
recent version of the Alsa drivers and library. Since the only SDL
output driver that knows about surround sound is the Alsa driver,
you���ll want to choose it, using:
export SDL_AUDIODRIVER=alsa
There are no syntactic changes to the programming API. No new
library calls, no differences in arguments.
There are two semantic changes:
(1) For library calls with number of channels as an argument, formerly
you could use only 1 or 2 for the number of channels. Now you
can also use 4 or 6.
(2) The two "left" and "right" arguments to Mix_SetPanning, for the
case of 4 or 6 channels, no longer simply control the volumes of
the left and right channels. Now the "left" argument is converted
to an angle and Mix_SetPosition is called, and the "right" argu-
ment is ignored.
With two exceptions, so far as I know, the modified SDL12 and
SDL_mixer work the same way as the original versions, when opened for
1 or 2 channel output. The two exceptions are bugs which I fixed.
Well, the first, anyway, is a bug for sure. When rate conversions up
or down by a factor of two are applied (in src/audio/SDL_audiocvt.c),
streams with different numbers of channels (that is, mono and stereo)
are treated the same way: either each sample is copied or every other
sample is omitted. This is ok for mono, but for stereo, it is frames
that should be copied or omitted, where by "frame" I mean a portion of
the stream containing one sample for each channel. (In the SDL source,
confusingly, sometimes frames are called "samples".) So for these
rate conversions, stereo streams have to be treated differently, and
they are, in my modified version.
The other problem that might be characterized as a bug arises
when SDL_mixer is passed a multichannel chunk which does not have an
integral number of frames. Due to the way the effect_position code
loops over frames, when the chunk ends with a partial frame, memory
outside the chunk buffer will be accessed. In the case of stereo,
it���s possible that because malloc may give more memory than requested,
this potential problem never actually causes a segment fault. I don���t
know. For 6 channel chunks, I do know, and it does cause segment
faults.
If SDL_mixer is passed defective chunks and this causes a segment
fault, arguably, that���s not a bug in SDL_mixer. Still, whether or not
it counts as a bug, it���s easy to protect against, so why not? I added
code in mixer.c to discard any partial frame at the end of a chunk.
Then what about when SDL or SDL_mixer is opened for 4 or 6 chan-
nel output? What happens with the parts of the current library
designed for stereo? I don���t know whether I���ve covered all the bases,
but I���ve tried:
(1) For playing 2 channel waves, or other cases where SDL knows it has
to match up a 2 channel source with a 4 or 6 channel output, I���ve
added code in SDL_audiocvt.c to make the necessary conversions.
(2) For playing midis using timidity, I���ve converted timidity to do 4
or 6 channel output, upon request.
(3) For playing mods using mikmod, I put ad hoc code in music.c to
convert the stereo output that mikmod produces to 4 or 6 chan-
nels. Obviously it would be better to change the mikmod code to
mix down into 4 or 6 channels, but I have a hard time following
the code in mikmod, so I didn���t do that.
(4) For playing mp3s, I put ad hoc code in smpeg to copy channels in
the case when 4 or 6 channel output is needed.
(5) There seems to be no problem with .ogg files - stereo .oggs can be
up converted as .wavs are.
(6) The effect_position code in SDL_mixer is now generalized to in-
clude the cases of 4 and 6 channel streams.
I���ve done a very limited amount of compatibility testing for some
of the games using SDL I happen to have. For details, see the file
TESTS.
I���ve put into a separate archive, Surround-SDL-testfiles.tgz, a
couple of 6 channel wave files for testing and a 6 channel ogg file.
If you have the right hardware and version of Alsa, you should be able
to play the wave files with the Alsa utility aplay (and hear all
channels, except maybe lfe, for chan-id.wav, since it���s rather faint).
Don���t expect aplay to give good sound, though. There���s something
wrong with the current version of aplay.
The canyon.ogg file is to test loading of 6 channel oggs. After
patching and compiling, you can play it with playmus. (My version of
ogg123 will not play it, and I had to patch mplayer to get it to play
6 channel oggs.)
Greg Lee <greg@ling.lll.hawaii.edu>
Thus, July 1, 2004
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sat, 21 Aug 2004 12:27:02 +0000 |
parents | abe872771687 |
children | 9867f3d86e44 |
rev | line source |
---|---|
0 | 1 |
2 All: | |
3 Audio rate conversion is only implemented by multiplying or dividing | |
4 by a power of two. This is a side-effect of the requirement that the | |
5 raw audio buffer size be a power of two, and can hopefully be fixed. | |
6 This means 8 KHz audio converted to 22 KHz ends up being 16 KHz. :-/ | |
7 | |
8 When the implementation is writing directly to video memory the mouse | |
9 cursor doesn't work properly. Applications which do this should use | |
10 their own mouse cursor and call SDL_ShowCursor(0) to hide the system | |
11 cursor. | |
12 | |
13 Linux: | |
14 Wide UNICODE character input (Kanji, etc.) is not yet supported. | |
15 It requires handling of keyboard mapping events and using the XIM | |
16 input translation extension. I will implement it as requested. | |
17 Latin-1 keyboard input works fine. | |
18 | |
27
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
19 The keyboard modifiers are not set to the correct state on startup. |
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
20 |
0 | 21 The AAlib, GGI, and SVGAlib video drivers are not heavily tested. |
22 | |
23 Win32: | |
24 The MCI driver can't tell if the CD-ROM drive is paused or stopped. | |
25 | |
26 The SDL_INIT_EVENTTHREAD flag is not supported on Win32 | |
27 (Idea: create a separate DirectInput polling thread) | |
28 The main purpose of this flag is for smooth cursor motion in | |
29 fullscreen environments. | |
30 | |
31 Wide UNICODE character input (Kanji, etc.) is not yet supported. | |
32 This requires the ToUnicode() API which is only implemented on | |
33 Windows NT/2000, not on Windows 95/98. | |
34 Latin-1 keyboard input works fine. | |
35 | |
36 Joysticks are only supported under the Win32 MultiMedia API, | |
37 DirectInput support is not yet implemented. | |
38 | |
39 BeOS: | |
40 BePPC is not supported, apparently not even by Be Inc. | |
41 | |
42 SDL_WM_GrabInput() is not implemented. | |
43 Does anyone know how to do this? SDL_WM_GrabInput() is designed | |
44 to prevent the user from switching input and mouse focus away from | |
45 the SDL application. | |
46 | |
47 Continuous relative mouse motion is not implemented. | |
48 | |
49 Wide UNICODE character input (Kanji, etc.) has not been tested. | |
50 Latin-1 keyboard input works fine. | |
51 | |
52 MacOS: | |
53 Palette handling isn't implemented in windowed mode yet. | |
54 | |
55 Audio hasn't been extensively tested, in particular the locking | |
56 isn't implemented and mixer routines may not call malloc() or free() | |
57 because they are called at interrupt time. | |
58 | |
59 SDL_WM_GrabInput() is not implemented. | |
60 Does anyone know how to do this? SDL_WM_GrabInput() is designed | |
61 to prevent the user from switching input and mouse focus away from | |
62 the SDL application. | |
63 | |
64 Continuous relative mouse motion is not implemented. | |
65 | |
66 SDL_AddTimer() and SDL_RemoveTimer() haven't been implemented yet. | |
67 | |
68 Not all of the keys are properly recognized on the keyboard. | |
69 | |
70 MacOS X: | |
47
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
27
diff
changeset
|
71 Depth switching for windowed mode isn't implemented yet. |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
27
diff
changeset
|
72 |
0 | 73 Palette handling isn't implemented in windowed mode yet. |
47
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
27
diff
changeset
|
74 |
390
19e73568a75c
Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
279
diff
changeset
|
75 Command-line arguments dialog is not implemented yet. |
0 | 76 |
47
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
27
diff
changeset
|
77 Fullscreen drawing has some artifacts. |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
27
diff
changeset
|
78 |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
27
diff
changeset
|
79 Fullscreen OpenGL for the software renderer is broken. |
0 | 80 |
47
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
27
diff
changeset
|
81 Some OpenGL parameters are not accounted for, for example color bits customization. |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
27
diff
changeset
|
82 |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
27
diff
changeset
|
83 Continuous mouse motion perhaps is not as smooth as it should be. |
0 | 84 |
47
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
27
diff
changeset
|
85 SDL_WM_GrabInput() is implemented, but it "freezes" the hardware |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
27
diff
changeset
|
86 cursor in the center of the window/screen. Also, mouse moved events |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
27
diff
changeset
|
87 are not generated, and the keyboard cannot be grabbed. |
0 | 88 |
89 MacOS X seems to have a broken pthread_cancel() implementation. | |
931
abe872771687
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
777
diff
changeset
|
90 Actually, it just only has one cancellation point defined. |
abe872771687
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
777
diff
changeset
|
91 http://lists.apple.com/archives/darwin-development/2004/Jun/24/killingapthread.001.txt |
0 | 92 |
93 FreeBSD: | |
94 pthread_cancel() isn't supported by FreeBSD 3.X, so threads don't | |
95 work on versions of FreeBSD earlier than 4.0. | |
96 | |
97 The CD-ROM handling doesn't work completely. | |
98 | |
99 Wide UNICODE character input (Kanji, etc.) is not yet supported. | |
100 It requires handling of keyboard mapping events and using the XIM | |
101 input translation extension. I will implement it as requested. | |
102 Latin-1 keyboard input works fine. | |
103 | |
27
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
104 The keyboard modifiers are not set to the correct state on startup. |
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
105 |
0 | 106 Solaris: |
107 The joystick functions are not implemented yet. | |
108 | |
109 Wide UNICODE character input (Kanji, etc.) is not yet supported. | |
110 It requires handling of keyboard mapping events and using the XIM | |
111 input translation extension. I will implement it as requested. | |
112 Latin-1 keyboard input works fine. | |
113 | |
27
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
114 The keyboard modifiers are not set to the correct state on startup. |
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
115 |
0 | 116 IRIX: |
117 The CD-ROM handling doesn't work completely. | |
118 | |
119 The joystick functions are not implemented yet. | |
120 | |
121 Wide UNICODE character input (Kanji, etc.) is not yet supported. | |
122 It requires handling of keyboard mapping events and using the XIM | |
123 input translation extension. I will implement it as requested. | |
124 Latin-1 keyboard input works fine. | |
125 | |
27
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
126 The keyboard modifiers are not set to the correct state on startup. |
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
127 |
250
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
128 EPOC: |
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
129 Only Crystal version of Epoc/SymbianOS is currently supported. |
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
130 |
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
131 SDL is implemented in static library only. SDL uses static/global |
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
132 variables and that is not allowed in EPOC dll libraries. |
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
133 |
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
134 Sound is not yet supported. |
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
135 |
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
136 Joystick, OpenGL and cdrom is not supported (think about cdrom in a cell phone:-). |
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
137 |
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
138 No console output screen. Printing to stdout do not have any effect. |
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
139 |
663
8bedd6d61642
Date: Sat, 2 Aug 2003 16:22:51 +0300
Sam Lantinga <slouken@libsdl.org>
parents:
571
diff
changeset
|
140 QNX: |
692
04dd6c6d7c30
Date: Fri, 15 Aug 2003 09:13:59 +0300
Sam Lantinga <slouken@libsdl.org>
parents:
663
diff
changeset
|
141 Fullscreen switch doesn't work (disabled for now). |
663
8bedd6d61642
Date: Sat, 2 Aug 2003 16:22:51 +0300
Sam Lantinga <slouken@libsdl.org>
parents:
571
diff
changeset
|
142 |
8bedd6d61642
Date: Sat, 2 Aug 2003 16:22:51 +0300
Sam Lantinga <slouken@libsdl.org>
parents:
571
diff
changeset
|
143 |
0 | 144 OpenBSD: -= NOT YET SUPPORTED =- |
145 This is reported to work, but I haven't verified this. | |
146 | |
147 Wide UNICODE character input (Kanji, etc.) is not yet supported. | |
148 It requires handling of keyboard mapping events and using the XIM | |
149 input translation extension. I will implement it as requested. | |
150 Latin-1 keyboard input works fine. | |
151 | |
27
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
152 The keyboard modifiers are not set to the correct state on startup. |
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
153 |
0 | 154 OSF/Tru64: -= NOT YET SUPPORTED =- |
155 The audio functions are not implemented yet. | |
156 | |
157 Joysticks and CD-ROM functions are not implemented yet. | |
158 | |
159 Wide UNICODE character input (Kanji, etc.) is not yet supported. | |
160 It requires handling of keyboard mapping events and using the XIM | |
161 input translation extension. I will implement it as requested. | |
162 Latin-1 keyboard input works fine. | |
163 | |
27
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
164 The keyboard modifiers are not set to the correct state on startup. |
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
165 |
0 | 166 AIX: -= NOT YET SUPPORTED =- |
167 This port has only been tested with AIX 4.3.3 | |
168 | |
169 The OpenGL support doesn't work yet. | |
170 | |
171 The joystick subsystem isn't implemented yet. | |
172 | |
173 Endian detection doesn't work yet - needs a unique CPP symbol. | |
174 | |
175 Wide UNICODE character input (Kanji, etc.) is not yet supported. | |
176 It requires handling of keyboard mapping events and using the XIM | |
177 input translation extension. I will implement it as requested. | |
178 Latin-1 keyboard input works fine. | |
179 | |
27
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
180 The keyboard modifiers are not set to the correct state on startup. |
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
181 |
0 | 182 The AIX port was done by Carsten.Griwodz@KOM.tu-darmstadt.de |
183 More information on this port is available at: | |
184 http://www.kom.e-technik.tu-darmstadt.de/~griff/SDL/ | |
185 | |
186 AmigaOS: -= NOT YET SUPPORTED =- | |
187 The OpenGL support isn't implemented yet. | |
188 | |
189 SDL_WM_GrabInput() is not implemented. | |
190 Does anyone know how to do this? SDL_WM_GrabInput() is designed | |
191 to prevent the user from switching input and mouse focus away from | |
192 the SDL application. | |
193 | |
194 Continuous relative mouse motion is not implemented. | |
195 | |
196 The AmigaOS port was done by Gabriele.Greco@galactica.it | |
250
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
197 |