Commit Graph

85 Commits

Author SHA1 Message Date
Sam Lantinga
2018ef5731 Date: Mon, 11 Oct 2004 15:17:27 +0300 (EEST)
From: Hannu Savolainen
Subject: Re: SDL uses obsolete OSS features

I did some work on getting OSS to work better with SDL. There have been
some problems with select which should be fixed now.

I'm having some problems in understanding what is the purpose of the
DSP_WaitAudio() routine. I added a return to the very beginning of this
routine and commendted out the define for USE_BLOCKING_WRITES. At least
lbreakout2 seems to work as well as earlier. The latencies are the same.

An ordinary blocking write does exactly the same thing than DSP_WaitAudio
does. So I would recommend using the USE_BLOCKING_WRITES approach and
removing everything from the DSP_WaitAudio routine. Also enabling
USE_BLOCKING_WRITES makes it possible to simplify DSP_PlayAudio() because
you don't need to handle the partial writes (the do-while loop).

Attached is a patch against SDL-1.2.7. After these changes SDL will use
OSS as it's designed to be used (make it as simple as possible). This code
should work with all OSS implementations because it uses only the very
fundamental features that have been there since the jurassic times.
2004-11-12 21:39:04 +00:00
Patrice Mandin
9fadd916f0 Forgot to disable debug messages 2004-10-29 11:19:03 +00:00
Patrice Mandin
f2f8e3477c Date: Fri, 29 Oct 2004 11:47:09 +0200
From: Patrice Mandin
Subject: Reworked audio drivers for Atari platform

These are reworked audio drivers for the Atari platform.

Previous drivers were missing some features:
- Test external clock plugged to DSP port on Atari Falcon 030.
- Ability to select internal or external clock.

So now, I generate a list of frequencies available, with the master clock
and predivisor to use. One big caveat to this: I do not have an external
clock, so I hope it works.
2004-10-29 09:56:53 +00:00
Sam Lantinga
2f5b8b6c5b Date: Sat, 9 Oct 2004 02:46:18 +0300 (EEST)
From: Hannu Savolainen
Subject: SDL uses obsolete OSS features

I was trying to compile SDL against the latest OSS version. It appeared
that SDL 1.2.7 is using a very old SOUND_PCM_WRITE_RATE ioctl that is
obsolete and has been removed from OSS. The right ioctl to call is
SNDCTL_DSP_SPEED. Attached is a patch (works with all OSS versions).
2004-10-09 22:11:45 +00:00
Sam Lantinga
9a56e87888 Date: Mon, 30 Aug 2004 18:20:25 +0200
From: Joost Baas
Subject: why call arts artsc?

I, and a few other people at the mplayer-docs-mailinglist were wondering why
you decided to call arts artsc. I understand usually users have nothing to do
with libsdl, just developers, but because you can choose the audio-driver
being used by mplayer, one of which is sdl, and you can also choose the sdl
subdriver, it is necessary to have a well-known or logical name. artsc is not
the logical choice, and it's very hard to look up the right name if you don't
know what you're looking for.
2004-09-17 13:25:06 +00:00
Sam Lantinga
ea38599d62 Date: Fri, 25 Jun 2004 13:29:15 +0100
From: "alan buckley"
Subject: Modification for RISC OS version of SDL

Ive attached a zip file with the changes to this email, it contains the
following:

The file sdldiff.txt is the output from cvs diff u.  .
The directory thread/riscos contains all the new files to support threading.

Readme.riscos is a new readme file to add.
2004-09-17 13:20:10 +00:00
Sam Lantinga
5a84f6d9ba 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
2004-08-21 12:27:02 +00:00
Sam Lantinga
efb58cab17 Date: Tue, 01 Jun 2004 15:27:44 +0300
From: Martin_Storsj
Subject: Update for dynamic loading of ALSA

I sent you a patch a few months ago which enables SDL to load ALSA
dynamically. Now I've finally got time to tweak this yet some more. I've
added code from alsa.m4 (from alsa's dev package) to acinclude.m4, and
made the detection of the alsa library name a bit better. I've also
fixed up the loading versioned symbols with dlvsym, so that it falls
back to dlsym.

I wouldn't say the configure script is complete yet, but this is how far
I've come this time, and I'm no expert at those things.
2004-08-21 04:20:00 +00:00
Sam Lantinga
b724c430fa CoreAudio driver works on Mac OSX 10.1 2004-08-21 03:21:44 +00:00
Sam Lantinga
a7e1a25cc0 Audio improvements from Max Horn, including a new CoreAudio driver for MacOSX 2004-08-21 02:06:30 +00:00
Sam Lantinga
8f5b9bfe09 Date: Mon, 05 Jul 2004 14:37:59 +0200
From: Yves Maurischat
Subject: [SDL] Crashes when using aRts on Linux

We had a problem with my app using SDL. It always crashed after SDL_OpenAudio(),
if the artsd was running on a Linux machine with KDE. After some investigation
(and searching for differences in other apps using arts) we found out, that the
problem resulted from loading, calling arts_init(), calling arts_free() and
unloading the aRts-Library in .../src/audio/arts/SDL_artsaudio.c twice: first in
"static int Audio_Available()", the second time in "static SDL_AudioDevice
*Audio_CreateDevice(int devindex)".
2004-08-18 21:41:39 +00:00
Sam Lantinga
7a9c165a1c Date: Sun, 18 Jul 2004 16:46:44 +0200
From: Georg Schwarz
Subject: Compiling SDL on IRIX 5.3

in order to make SDL compile on IRIX 5.3 I had to apply the following patch
2004-07-18 18:33:28 +00:00
Sam Lantinga
faa0e1d28b Date: Mon, 10 May 2004 10:17:46 -0400
From: Mike Frysinger
Subject: Re: [SDL] gcc-3.4.0 / PIC fix

here's a combined patch (yours and the one i mentioned earlier) that i tested
with gcc-3.4.0 and gcc-3.3.3
2004-05-16 17:19:48 +00:00
Sam Lantinga
a122ee994b Date: Sun, 29 Feb 2004 15:14:22 +0200
From: Martin_Storsj
Subject: Dynamic loading of ALSA

I recently discovered that SDL can dynamically load ESD and aRts, and
made a patch which adds this same functionality to ALSA.

The update for configure.in isn't too good (it should e.g. look for
libasound.so in other directories than /usr/lib), because I'm not too
good at shellscripting and autoconf.

The reason for using dlfcn.h and dlopen instead of SDL_LoadLibrary and
SDL_LoadFunction is that libasound uses versioned symbols, and it is
necessary to load the correct version using dlvsym. This isn't probably
any real portability issue, because ALSA is linux-only.
2004-03-02 12:49:16 +00:00
Sam Lantinga
0b61527eaa Date: Sun, 29 Feb 2004 20:28:27 +0200
From: Martin_Storsj
Subject: Slight bug in ESD and aRts

When I experimented with the ALSA-patch, I found a slight bug in the
Load{ESD,ARTS}Library-functions. The check of whether a function pointer
was correctly loaded looks like this right now:

*esd_functions[i].func = SDL_LoadFunction(esd_handle,
esd_functions[i].name);
if ( ! esd_functions[i].func )

Isn't that supposed to be ( ! *esd_functions[i].func )?
2004-03-02 12:45:22 +00:00
Sam Lantinga
6a861cc7d9 Simplify code and clean up Valgrind warning 2004-02-11 07:26:29 +00:00
Sam Lantinga
32719e7429 Updated copyright information for 2004 (Happy New Year!) 2004-01-04 16:49:27 +00:00
Sam Lantinga
b30474af9e Editors Note: The original patch was modified to use SDL_Delay() instead of
nanosleep because nanosleep may not be portable to all systems
              using SDL with the ALSA backend.  This may be a moot point with
              the switch to blocking writes anyway...

Date: Sat, 27 Dec 2003 21:47:36 +0100
From: Michel Daenzer
To: Debian Bug Tracking System
Subject: [SDL] Bug#225252: [PATCH] ALSA fixes

Package: libsdl1.2debian-all
Version: 1.2.6-2
Severity: normal
Tags: patch

For SDL 1.2.6, the ALSA backend was changed to call snd_pcm_open() with
SND_PCM_NONBLOCK. That's a good idea per se, however, it causes high CPU
usage, interrupted sound and stuttering in some games here. Taking a nanosleep
whenever snd_pcm_writei() returns -EAGAIN fixes this, but I think it's more
efficient to use blocking mode for the actual sound playback. Feedback from the
SDL and ALSA lists appreciated.

The patch also fixes the default ALSA device to be used.
2004-01-04 15:40:50 +00:00
Sam Lantinga
852bb177c1 Date: Sun, 14 Dec 2003 15:16:12 +0100
From: Stephane Marchesin
Subject: Re: [SDL] compile problem with sdl <-> alsa

The attathced patch does the trick (although there will have to be code
changes when the alsa 0.9 api get deprecated).

On a side-note, the good news is that using alsa 1.0.0rc1 solves the
previous issues I had with my ac97 via sound chipset.
2003-12-16 13:16:50 +00:00
Sam Lantinga
4c27c8cfe5 Date: Fri, 12 Dec 2003 11:51:21 +0900
From: Hayashi Naoyuki
Subject: Tru64 audio(mme) fix

./src/audio/mme/SDL_mmeaudio.c
Fix the sound skip problem which is caused
even if it recover from high load.
2003-12-14 06:28:07 +00:00
Sam Lantinga
6c1f33bee2 Greatly simplified the SDL CPU info code 2003-11-24 09:22:12 +00:00
Sam Lantinga
9981325fda Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h 2003-11-18 01:27:06 +00:00
Sam Lantinga
c675c64d80 *** empty log message *** 2003-10-06 09:03:02 +00:00
Sam Lantinga
c82baf190a *** empty log message *** 2003-09-21 19:25:45 +00:00
Sam Lantinga
b43f702dee Date: Sat, 13 Sep 2003 15:50:43 +0300
From: "Mike Gorchak"
Subject: QNX fixes

improved sound code for the QNX, added workarounds for known bugs, fixed photon detect code. Update .qpg file.
2003-09-21 18:13:48 +00:00
Patrice Mandin
2116d00051 Small bugfixes 2003-08-30 20:00:11 +00:00
Sam Lantinga
d430656ec6 Date: Sat, 2 Aug 2003 16:22:51 +0300
From: "Mike Gorchak"
Subject: New patches for QNX6

Here my patches for the SDL/QNX:

QNXSDL.diff - diff to non-QNX related sources:

- updated BUGS file, I think QNX6 is now will be officially supported
- configure.in - added shared library support for QNX, and removed dependency between the ALSA and QNX6.
- SDL_audio.c - added QNX NTO sound bootstrap insted of ALSA's.
- SDL_sysaudio.h - the same.
- SDL_nto_audio.c - the same.
- SDL_video.c - right now, QNX doesn't offer any method to obtain pointers to the OpenGL functions by function name, so they must be hardcoded in library, otherwise OpenGL will not be supported.
- testsprite.c - fixed: do not draw vertical red line if we are in non-double-buffered mode.

sdlqnxph.tar.gz - archive of the ./src/video/photon/* . Too many changes in code to make diffs :) :

+ Added stub for support hide/unhide window event
+ Added full YUV overlays support.
+ Added window maximize support.
+ Added mouse wheel events.
+ Added support for some specific key codes in Unicode mode (like ESC).
+ Added more checks to the all memory allocation code.
+ Added SDL_DOUBLEBUF support in all fullscreen modes.
+ Added fallback to window mode, if desired fullscreen mode is not supported.
+ Added stub support for the GL_LoadLibrary and GL_GetProcAddress functions.
+ Added resizable window support without caption.
! Fixed bug in the Ph_EV_EXPOSE event handler, when rectangles to update is 0 and when width or height of the rectangle is 0.
! Fixed bug in the event handler code. Events has not been passed to the window widget handler.
! Fixed codes for Win keys (Super/Hyper/Menu).
! Fixed memory leak, when deallocation palette.
! Fixed palette emulation code bugs.
! Fixed fullscreen and hwsurface handling.
! Fixed CLOSE button bug. First event was passed to the handler, but second terminated the application. Now all events passed to the application correctly.
- Removed all printfs in code, now SDL_SetError used instead of them.
- Disabled ToggleFullScreen function.

README.QNX - updated README.QNX file. Added much more issues.
2003-08-04 00:52:42 +00:00
Sam Lantinga
4b88b12551 Added audio and CD-ROM support for OSF/Tru64 (thanks Hayashi!) 2003-07-22 14:01:21 +00:00
Patrice Mandin
4d7c7bd88d Atari MiNT: remove useless files 2003-07-07 19:19:39 +00:00
Patrice Mandin
3bae012d34 Atari MiNT: added more audio drivers 2003-07-07 19:16:03 +00:00
Patrice Mandin
2c447beccf Add m68k assembly mixing routines 2003-06-03 19:35:10 +00:00
Sam Lantinga
041169aa8b Added initial support for RISC OS (thanks Peter Naulls!) 2003-05-29 04:44:13 +00:00
Sam Lantinga
9c74d97a17 IRIX patches from Andrea Suatoni 2003-03-06 06:12:41 +00:00
Sam Lantinga
1f58bc7a38 Cth converted the MMX audio mixing routines to VC++ syntax 2003-01-20 16:01:20 +00:00
Sam Lantinga
d1a8d6261c Updated Atari port for new system headers (thanks Patrice!) 2002-12-07 06:54:47 +00:00
Sam Lantinga
9135e95302 Open the ALSA devices in non-blocking mode (thanks Aleksey!) 2002-11-17 20:01:54 +00:00
Sam Lantinga
182dde0319 *** empty log message *** 2002-11-17 18:59:10 +00:00
Sam Lantinga
6b36d7ea48 Added MMX audio mixing code for gcc (thanks Stephane!) 2002-11-09 06:13:28 +00:00
Sam Lantinga
fd756e4973 Added initial support for Dreamcast (thanks HERO!) 2002-10-05 16:50:56 +00:00
Sam Lantinga
5689e8a3cf Doh! Patch by Joel Ray Holveck 2002-08-28 23:25:09 +00:00
Sam Lantinga
1ef49b7681 Removed unused function 2002-08-24 17:30:49 +00:00
Sam Lantinga
8cbbab0b2e Updated for embedded Visual C++ 4.0 2002-08-20 00:20:06 +00:00
Sam Lantinga
85ab5ea685 Date: Fri, 12 Jul 2002 11:25:32 GMT+1
From: Patrice Mandin <pmandin@caramail.com>
Subject: [SDL][PATCH] Audio for Atari, and XFree86 compilation

I corrected a little bug in the Atari audio driver in SDL.
I also added the patch for xfree86 detection in configure.in
2002-07-29 23:20:16 +00:00
Sam Lantinga
205a2da115 *** empty log message *** 2002-07-10 17:10:46 +00:00
Sam Lantinga
fa1d70e67a Updated the QNX audio code for QNX 6.2 (thanks Travis!) 2002-06-16 04:17:57 +00:00
Sam Lantinga
aa03ca8e40 Added Atari audio support (thanks Patrice!) 2002-06-10 20:42:53 +00:00
Sam Lantinga
d0d4c9eaae Use secondary audio buffers to avoid problems on various soundcards 2002-05-19 22:34:36 +00:00
Sam Lantinga
38b24594d9 *** empty log message *** 2002-04-15 07:49:54 +00:00
Sam Lantinga
876975e160 *** empty log message *** 2002-04-15 07:47:35 +00:00
Sam Lantinga
b5b9f2d039 Updated ALSA audio support for ALSA 0.9 2002-04-15 07:38:54 +00:00