Commit graph

137 commits

Author SHA1 Message Date
Yamagi Burmeister
47707a728e Use Windows headers on Windows 2012-06-11 10:18:44 +02:00
Yamagi Burmeister
d8e35b82c7 Reformat the sound system code
caedes and some other people will probably kill me for this, but I'm the
idiot who has to maintain the code. And that's much easier if it's in a
readable und writeable state.
2012-06-06 11:13:07 +02:00
Yamagi Burmeister
51cc3369b1 Provide an optimized case for mixing 16 bit / 2 chan sound
With sound quality "high" nearly all sound is provided as 16 bit PCM
with 2 channels. Since most players use this setting, provide an optimed
case for it. This should also solve the cracking due to overshot
soundbuffers, which was especially noticeable on Windows. This changes
only effects the old SDL soundbackend and not OpenAL.
2012-06-06 10:34:36 +02:00
Yamagi Burmeister
15400b2133 Use memset() instead of array magic 2012-06-06 10:02:55 +02:00
Yamagi Burmeister
272b897919 Reformat snd_mix.c 2012-06-06 09:58:06 +02:00
Yamagi Burmeister
5d272eeab8 strsep() is a FreeBSDism. Switch over to strtok(). 2012-06-04 10:53:55 +02:00
Yamagi Burmeister
9823a23a91 Initialize sounds[] to avoid garbage branch conditions down below 2012-06-04 09:13:29 +02:00
Yamagi Burmeister
35e5bbb48b Convert rand(), crand() and frand() to randk(), crandk() and frandk() 2012-06-04 09:13:29 +02:00
Yamagi Burmeister
edae2b0473 Change atof() to strtod() 2012-06-04 09:13:28 +02:00
Yamagi Burmeister
e9c90e16a9 Change atoi() to strtol() 2012-06-04 09:13:28 +02:00
Yamagi Burmeister
0e1520d29a Remove dead code and assignments 2012-06-01 17:05:40 +02:00
Yamagi Burmeister
e9605e8a8b Use AL_BUFFERS_QUEUED at stream shutdown. 2012-05-26 12:03:01 +02:00
Yamagi Burmeister
492b7c1a2b Convert whitespace indentation to tabs 2012-05-26 12:00:48 +02:00
Yamagi Burmeister
28c4edfd69 Clear buffers before deleting the sources
This fixes a very long lasting shutdown procedure which made it look
like Quake II freezed. Especially on slow machines it was a problem.
2012-05-26 11:37:47 +02:00
Daniel Gibson
62d76b3d40 Fix segfault when s_openal=0 but USE_OPENAL=1
If the game was compiled with openal support (USE_OPENAL is defined),
but it's disabled via cvar (set s_openal 0) there could be segfaults
when calls to openal where done anyway, because the check
if(sound_started == SS_OAL) was forgotten.
This is fixed now.
2012-05-17 14:47:05 +02:00
Yamagi Burmeister
5bf1ee670d Fix s_show when OpenAL is used 2012-05-12 15:11:17 +02:00
Yamagi Burmeister
aff51633d0 Add a sanity check against buffer overflows to S_BuildSoundList 2012-05-12 14:46:13 +02:00
Yamagi Burmeister
4a414b588e Fix a buffer overflow in AL_AddLoopSounds
This fixes a crash in mine4.bsp and most likely some other problems.
The bug was reported by "mxmvasilyev0 [at] gmail [dot] com" and tracked
as Github issue #1.
2012-05-12 14:42:15 +02:00
Christoph Mallon
ab034114b4 Whitespace fixes. 2012-04-30 08:25:59 +02:00
Daniel Gibson
31f9af817f Last fixes and cleanups for OpenAL support
* New license header in snd_al.c
* README fixes
* Fix printing of used OpenAL device
* Cleanup in snd_al.c
2012-04-28 15:44:14 +00:00
Yamagi Burmeister
c62e5ac85b - Implement AL_UnqueueRawSamples() and use it to stop the Vorbis playback
imediatly
- Increase Vorbis buffers to 64. 24 were to few
2012-04-27 14:06:08 +00:00
Yamagi Burmeister
2b6389a471 Filter sound samples (not the music) when under water 2012-04-27 13:55:45 +00:00
Yamagi Burmeister
1a0b4ebad5 Do not set / enable / show the s_openal CVAR if the binary is build
without OpenAL support. OpenAL is enabled in the default Makefile and if
it's disabled, it's shown at startup.
2012-04-27 12:00:22 +00:00
Yamagi Burmeister
a388254252 Fix a missmerge 2012-04-25 10:09:16 +00:00
Yamagi Burmeister
2c3c203097 Merge out new options framework from the trunk 2012-04-25 09:57:17 +00:00
Yamagi Burmeister
03015a686b Hide music playback from CD behind CDA 2012-04-25 08:53:25 +00:00
Yamagi Burmeister
9d60a5de6a Hide OGG/Vorbis support under OGG 2012-04-25 08:24:38 +00:00
Yamagi Burmeister
f836cef4c4 Rename qal_api.c to unix/qal.c and qal_api.h to unix/header/qal.h.
Both files are platform dependend and won't work on non unixoid
platforms.
2012-04-24 14:20:01 +00:00
Yamagi Burmeister
bf6d491af3 - Refactor AL_SoundInfo() into the platform dependent
QAL_SoundInfo().
- Use QAL_SoundInfo() to print the OpenAL infos 
  at startup and by the "soundinfo" command.
- Implement printing of all available OpenAL
  devices at startup and by the "soundinfo"
  command.
2012-04-24 14:07:33 +00:00
Yamagi Burmeister
79c137254a Rework qal_api.c and qal_api.h:
- Reformat to match "our" coding style
- Unroll all unreadable macros
- Remove the use of goto
2012-04-24 13:22:05 +00:00
Yamagi Burmeister
479aae4a9c *gna* This \n got lost on the way 2012-04-23 13:57:36 +00:00
Yamagi Burmeister
90d0811185 Delete all OpenAL sources at shutdown 2012-04-23 13:55:25 +00:00
Yamagi Burmeister
134878e996 - Some more minor style cleanup
- Much improved startup log messages
2012-04-23 13:44:12 +00:00
Yamagi Burmeister
678e50bf8d Raise the volume of a positioned sample by 384 instead of 255 when using
OpenAL. This makes them much more distinguishable from the background
music.
2012-04-23 13:23:47 +00:00
Yamagi Burmeister
3bce2a212a - Use a better way to calculate the number of buffers
used by OGG/Vorbis. 24 buffers are enough for smooth
  and stutter free playback and ensure, that OGG_Stop()
  is effective nearly immediately.
- Change C99 comments to C89, since snd_vorbis.c is
  a C89 file. Caedes will beat me for this :/
2012-04-23 07:59:39 +00:00
Daniel Gibson
3d7013e12b Fix: Cvar_Get needs a string as default value, not an int.. 2012-04-22 20:28:41 +00:00
Daniel Gibson
8bfc61b564 Introduce s_openal to enable/disable OpenAL
And fix possible dangling else problem in that code
2012-04-22 20:27:02 +00:00
Daniel Gibson
efd85a76c6 Updated paintedtime in OpenAL mode so shotgun sounds right
probably fixes other issues as well.
2012-04-22 20:14:56 +00:00
Daniel Gibson
65914b342d Allow DMA/SDL sound in OGG_Stream when compiling with USE_OPENAL 2012-04-22 17:59:03 +00:00
Yamagi Burmeister
e388a425b4 Enable OGG/Vorbis playback in OpenAL mode. 2012-04-22 17:50:15 +00:00
Daniel Gibson
04fd7f2cda OpenAL Streaming Sound stuff
from zeq2, but adapted/stripped down for our needs.

Videos work (for me), music does not (yet)
2012-04-22 15:59:18 +00:00
Daniel Gibson
6384b850f1 Remove redundancy 2012-04-22 15:57:59 +00:00
Daniel Gibson
f4d5040a73 Add OpenAL stuff to Makefile, make it compile and work (no streaming sound yet)
It works \o/
It's still hacky so it needs more work.
And streaming sound (OGG music, sound from videos) is still missing.
2012-04-22 00:24:50 +00:00
Daniel Gibson
7e0a44825e OpenAL support, from Q2Pro
Copied and adapted (hopefully) all relevant code from Q2Pro.
Did some small refactorings when needed.

Still TODO:
* Adapt Makefile
* OGG support when using OpenAL
* A cvar that switches between OpenAL and DMA/SDL
* Actually compiling and testing this stuff ;)
2012-04-15 02:58:01 +00:00
Yamagi Burmeister
77de60f274 Fix a rare crash by nullpointer 2011-10-13 13:16:59 +00:00
Yamagi Burmeister
0aa45e9736 Fix some warnings with clang 2011-06-27 14:40:16 +00:00
Yamagi Burmeister
bff20f6b7c Nächter Soundpatch von Ozkan:
- Adds a "float volume" argument to snd_dma.c:S_RawSamples()
	so that ogg can use it too
  - That S_RawSamples now has a volume argument, the
    cinematics now honor the volume adjustment instead of 
    playing at full volume all the time even if volume is
	zeroed                                                                               
  - Moves endianism handling from S_RawSamples to codec
    level                                                         
  - Fixes an issue of S_RawSamples with 8 bit stereo samples
	(not seen/tested with q2 but with my uhexen2)
  - Other minor adjustments
2010-12-20 09:56:37 +00:00
Yamagi Burmeister
f5f5c0d2ca Korrigiere Endianism im Vorbis-Code 2010-12-03 09:45:49 +00:00
Yamagi Burmeister
4b6c561acc Erweitere Vorbis-Unterstützung:
- Support für Big-Endian Pamps (läuft yQ2 auf sowas überhaupt?)
 - Unterstützung für 22khz Vorbis-Dateien (ermöglicht es die
   Wave-Dateien aus den Pags in Vorbis zu konvertieren, wenn man denn
   drauf steht.)
 - Unterstützung für Mono-Dateien (Sinnvoll für Handhelds)

Patch von: Ozkan Sezer
2010-11-30 10:28:20 +00:00
Yamagi Burmeister
e57aba66c1 Man sollte strncmp() auch richtig anwenden 2010-11-27 11:19:59 +00:00
Yamagi Burmeister
8af8dd1559 Stoppe Ogg-Playback, wenn Track 0 gefordert wird 2010-11-27 10:45:09 +00:00
Yamagi Burmeister
758d82fe4c Deregistriere ogg_init und ogg-shutdown 2010-11-01 15:48:01 +00:00
Yamagi Burmeister
f0fa091fde s_khz per Default auf 44 2010-10-28 05:57:13 +00:00
Yamagi Burmeister
7c6551dc0f Einen kleinen Bug gefixt, der zu Soundclipping führte 2010-10-28 05:56:20 +00:00
Yamagi Burmeister
09c87ea0cc Reformatiere die Startup Ausgabe 2010-10-19 13:34:08 +00:00
Yamagi Burmeister
7ebccb34d4 - Formatiere Code neu
- Einige Änderungen für mehr Robustheit
- Vereinfache Code und reiße überflüssigen Müll raus
2010-10-14 06:59:42 +00:00
Yamagi Burmeister
ebe4cb1b45 - Formatiere Code neu
- Vereinfache Code
2010-10-14 06:29:53 +00:00
Yamagi Burmeister
90101b4dec - Formatiere Code neu
- Vereinfache Code
2010-10-14 06:23:35 +00:00
Yamagi Burmeister
a8a61f0234 - Vereinfache Code
- Reformatiere
2010-10-14 06:14:35 +00:00
Yamagi Burmeister
2b405405dc - Formatiere neu
- Vereinfache Code
2010-10-14 06:08:10 +00:00
Yamagi Burmeister
dc930150cf Und noch ein paar Dinge mehr am Sound gemacht 2010-10-13 18:00:39 +00:00
Yamagi Burmeister
f20f8bddf4 Einige fixes für das Soundsystem 2010-10-13 17:07:29 +00:00
Yamagi Burmeister
67ef502a93 - Reduce sounds to 96
- Increase com_maxfps to 120
2010-10-01 16:11:00 +00:00
Yamagi Burmeister
0c020c4ee4 Intelligentere Deafults:
rate 8000 ist mehr als ausreichend bei allem, was kein Modem mehr ist.
s_mixahead 0.14 ist besser als 0.2, außer man will ein leichtes soundlag
cl_maxfps auf 60. Das reicht und verhindert bugs
2010-07-13 18:42:12 +00:00
Yamagi Burmeister
b554afa486 Headerguqards für den Client 2010-07-13 18:30:43 +00:00
Yamagi Burmeister
787686a976 Dateiheader neu formatiert und "particles.h" entfernt 2010-07-13 18:19:42 +00:00
Yamagi Burmeister
185063f1a9 Voice over Network weitergehend kommentiert 2010-07-13 08:54:23 +00:00
Yamagi Burmeister
c8927b0cee Mehr Sounds 2010-07-13 08:48:09 +00:00
Yamagi Burmeister
f16ba343cc s_primary war windows only 2010-07-13 08:44:06 +00:00
Yamagi Burmeister
c81863ef71 snd_local.h -> header/local.h 2010-06-19 19:10:31 +00:00
Yamagi Burmeister
3007608a22 Benenne snd_ogg.c in snd_vorbis.c um 2010-06-19 19:06:37 +00:00
Yamagi Burmeister
82b038590d Die Sound-Header in ein eigenes verzeichnis 2010-06-19 19:04:39 +00:00
Yamagi Burmeister
8925af9878 Den Wave-Code in eine eigene Datei 2010-06-19 18:59:33 +00:00
Yamagi Burmeister
1c7ef236f9 sound.h reformatiert 2010-06-19 18:54:45 +00:00
Yamagi Burmeister
01e870b794 snd_loc.h umbenannt zu snd_local.h 2010-06-19 18:51:28 +00:00
Yamagi Burmeister
fe587b7148 weitere Dateien des Soundsystems neu formatiert und kommentiert 2010-06-19 17:04:32 +00:00
Yamagi Burmeister
0c4a7d291f snd_dma überarbeitet was die Kommentare und die Formatierung betrifft 2010-06-19 08:47:14 +00:00
Yamagi Burmeister
6669ab3643 strtok ist seit Jahren durch strsep ersetzt. Es ist schneller und
besser.
2010-06-17 06:59:33 +00:00
Yamagi Burmeister
c7d5882fe1 22kHz Sound als Standardeinstellung 2010-02-01 15:09:47 +00:00
Yamagi Burmeister
c3dcd1c1fa Behebt einen Absturz beim Levelwechsel, wenn zuvor OGG/Vorbis
deaktiviert wurde.
2010-01-28 21:11:46 +00:00
Yamagi Burmeister
afce443234 Die "Playing $file" Meldung weg. Sie nervt 2009-10-06 15:12:06 +00:00
Yamagi Burmeister
e4818d35d5 Speichern funktioniert nun wieder. Das Menü spinnt aber noch 2009-10-04 09:26:46 +00:00
Yamagi Burmeister
137c9ce5d7 Man sollte auch alle Dateien mergen... 2009-10-03 16:08:34 +00:00
Yamagi Burmeister
b6f5dadf4c Merge in den Trunk:
- OGG/Vorbis Support
 - pk3 Support (ungetestet)
2009-10-03 16:06:45 +00:00
Yamagi Burmeister
327c0352d2 Einen üblen Soundcrash entfernt 2009-03-10 20:29:15 +00:00
Yamagi Burmeister
0505ea55a9 Der Sound soll auch ohne rumeditieren mit Alsa laufen 2009-03-10 17:36:01 +00:00
Yamagi Burmeister
05e630158a Dateien des Clients neu angeordnet 2009-03-03 13:43:32 +00:00