X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=snd_mix.c;h=790642cc8f418206b9d12cac3068fb514ee2b023;hb=fdc383f68458695b081a8418beb36d7097c6f455;hp=d4dadbae3f84b654bfa1a2e59a6f14c4a9a3bcc3;hpb=f85c51b632f3e340d5a70418c47895ed11dc2cbd;p=xonotic%2Fdarkplaces.git diff --git a/snd_mix.c b/snd_mix.c index d4dadbae..790642cc 100644 --- a/snd_mix.c +++ b/snd_mix.c @@ -21,14 +21,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "quakedef.h" -#ifdef _WIN32 -#include "winquake.h" -#endif - // LordHavoc: was 512, expanded to 2048 -#define PAINTBUFFER_SIZE 2048 +#define PAINTBUFFER_SIZE 2048 portable_samplepair_t paintbuffer[PAINTBUFFER_SIZE]; -int snd_scaletable[32][256]; +int snd_scaletable[32][256]; /* // LordHavoc: disabled this because it desyncs with the video too easily @@ -45,7 +41,7 @@ void S_CaptureAVISound(portable_samplepair_t *buf, int length) if (cl_avidemo_soundfile == NULL) { sprintf (filename, "%s/dpavi.wav", com_gamedir); - cl_avidemo_soundfile = fopen(filename, "wb"); + cl_avidemo_soundfile = FS_Open (filename, "wb", false); memset(out, 0, 44); fwrite(out, 1, 44, cl_avidemo_soundfile); // header will be filled out when file is closed @@ -267,11 +263,11 @@ void SND_PaintChannelFrom16 (channel_t *ch, sfxcache_t *sc, int endtime); void S_PaintChannels(int endtime) { - int i; - int end; + int i; + int end; channel_t *ch; - sfxcache_t *sc; - int ltime, count; + sfxcache_t *sc; + int ltime, count; while (paintedtime < endtime) { @@ -280,8 +276,8 @@ void S_PaintChannels(int endtime) if (endtime - paintedtime > PAINTBUFFER_SIZE) end = paintedtime + PAINTBUFFER_SIZE; - // clear the paint buffer - memset(paintbuffer, 0, (end - paintedtime) * sizeof(portable_samplepair_t)); + // clear the paint buffer, filling it with data from rawsamples (music/video/whatever) + S_RawSamples_Dequeue(&paintbuffer->left, end - paintedtime); // paint in the channels. ch = channels; @@ -331,7 +327,6 @@ void S_PaintChannels(int endtime) } } } - } // transfer out according to DMA format @@ -343,19 +338,19 @@ void S_PaintChannels(int endtime) void SND_InitScaletable (void) { - int i, j; + int i, j; - for (i=0 ; i<32 ; i++) - for (j=0 ; j<256 ; j++) + for (i = 0;i < 32;i++) + for (j = 0;j < 256;j++) snd_scaletable[i][j] = ((signed char)j) * i * 8; } void SND_PaintChannelFrom8 (channel_t *ch, sfxcache_t *sc, int count) { - int *lscale, *rscale; + int *lscale, *rscale; unsigned char *sfx; - int i; + int i, n; if (ch->leftvol > 255) ch->leftvol = 255; @@ -368,22 +363,20 @@ void SND_PaintChannelFrom8 (channel_t *ch, sfxcache_t *sc, int count) { // LordHavoc: stereo sound support, and optimizations sfx = (unsigned char *)sc->data + ch->pos * 2; - - for (i=0 ; idata + ch->pos; - - for (i=0 ; ileftvol; rightvol = ch->rightvol;