X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=snd_mix.c;h=10da40047ec05355f7ccf85eff87d7b1a115344f;hb=9ac6f1395459b9ab4093f690365ce1e3d62d0577;hp=29012cc0a3db9147dfc76c1717c20338a2094c00;hpb=0b82907912e90cfa8ad0595bf3ec7e960b753bb0;p=xonotic%2Fdarkplaces.git diff --git a/snd_mix.c b/snd_mix.c index 29012cc0..10da4004 100644 --- a/snd_mix.c +++ b/snd_mix.c @@ -28,6 +28,7 @@ static portable_sampleframe_t paintbuffer_unswapped[PAINTBUFFER_SIZE]; extern speakerlayout_t snd_speakerlayout; // for querying the listeners +#ifdef CONFIG_VIDEO_CAPTURE static void S_CaptureAVISound(const portable_sampleframe_t *paintbuffer, size_t length) { size_t i; @@ -46,10 +47,11 @@ static void S_CaptureAVISound(const portable_sampleframe_t *paintbuffer, size_t SCR_CaptureVideo_SoundFrame(paintbuffer_unswapped, length); } +#endif extern cvar_t snd_softclip; -static void S_SoftClipPaintBuffer(portable_sampleframe_t *painted_ptr, int nbframes, int width, int channels) +static void S_SoftClipPaintBuffer(portable_sampleframe_t *painted_ptr, int nbframes, int width, int nchannels) { int i; @@ -68,7 +70,7 @@ static void S_SoftClipPaintBuffer(portable_sampleframe_t *painted_ptr, int nbfra maxvol = max(1.0f, maxvol * (1.0f - nbframes / (0.4f * snd_renderbuffer->format.speed))); #define SOFTCLIP(x) if(fabs(x)>maxvol) maxvol=fabs(x); (x) /= maxvol; - if (channels == 8) // 7.1 surround + if (nchannels == 8) // 7.1 surround { for (i = 0;i < nbframes;i++, p++) { @@ -82,7 +84,7 @@ static void S_SoftClipPaintBuffer(portable_sampleframe_t *painted_ptr, int nbfra SOFTCLIP(p->sample[7]); } } - else if (channels == 6) // 5.1 surround + else if (nchannels == 6) // 5.1 surround { for (i = 0; i < nbframes; i++, p++) { @@ -94,7 +96,7 @@ static void S_SoftClipPaintBuffer(portable_sampleframe_t *painted_ptr, int nbfra SOFTCLIP(p->sample[5]); } } - else if (channels == 4) // 4.0 surround + else if (nchannels == 4) // 4.0 surround { for (i = 0; i < nbframes; i++, p++) { @@ -104,7 +106,7 @@ static void S_SoftClipPaintBuffer(portable_sampleframe_t *painted_ptr, int nbfra SOFTCLIP(p->sample[3]); } } - else if (channels == 2) // 2.0 stereo + else if (nchannels == 2) // 2.0 stereo { for (i = 0; i < nbframes; i++, p++) { @@ -112,7 +114,7 @@ static void S_SoftClipPaintBuffer(portable_sampleframe_t *painted_ptr, int nbfra SOFTCLIP(p->sample[1]); } } - else if (channels == 1) // 1.0 mono + else if (nchannels == 1) // 1.0 mono { for (i = 0; i < nbframes; i++, p++) { @@ -123,7 +125,7 @@ static void S_SoftClipPaintBuffer(portable_sampleframe_t *painted_ptr, int nbfra } } -static void S_ConvertPaintBuffer(portable_sampleframe_t *painted_ptr, void *rb_ptr, int nbframes, int width, int channels) +static void S_ConvertPaintBuffer(portable_sampleframe_t *painted_ptr, void *rb_ptr, int nbframes, int width, int nchannels) { int i, val; @@ -132,7 +134,7 @@ static void S_ConvertPaintBuffer(portable_sampleframe_t *painted_ptr, void *rb_p if (width == 2) // 16bit { short *snd_out = (short*)rb_ptr; - if (channels == 8) // 7.1 surround + if (nchannels == 8) // 7.1 surround { for (i = 0;i < nbframes;i++, painted_ptr++) { @@ -146,7 +148,7 @@ static void S_ConvertPaintBuffer(portable_sampleframe_t *painted_ptr, void *rb_p val = (int)(painted_ptr->sample[7] * 32768.0f);*snd_out++ = bound(-32768, val, 32767); } } - else if (channels == 6) // 5.1 surround + else if (nchannels == 6) // 5.1 surround { for (i = 0; i < nbframes; i++, painted_ptr++) { @@ -158,7 +160,7 @@ static void S_ConvertPaintBuffer(portable_sampleframe_t *painted_ptr, void *rb_p val = (int)(painted_ptr->sample[5] * 32768.0f);*snd_out++ = bound(-32768, val, 32767); } } - else if (channels == 4) // 4.0 surround + else if (nchannels == 4) // 4.0 surround { for (i = 0; i < nbframes; i++, painted_ptr++) { @@ -168,7 +170,7 @@ static void S_ConvertPaintBuffer(portable_sampleframe_t *painted_ptr, void *rb_p val = (int)(painted_ptr->sample[3] * 32768.0f);*snd_out++ = bound(-32768, val, 32767); } } - else if (channels == 2) // 2.0 stereo + else if (nchannels == 2) // 2.0 stereo { for (i = 0; i < nbframes; i++, painted_ptr++) { @@ -176,7 +178,7 @@ static void S_ConvertPaintBuffer(portable_sampleframe_t *painted_ptr, void *rb_p val = (int)(painted_ptr->sample[1] * 32768.0f);*snd_out++ = bound(-32768, val, 32767); } } - else if (channels == 1) // 1.0 mono + else if (nchannels == 1) // 1.0 mono { for (i = 0; i < nbframes; i++, painted_ptr++) { @@ -186,12 +188,12 @@ static void S_ConvertPaintBuffer(portable_sampleframe_t *painted_ptr, void *rb_p // noise is really really annoying if (cls.timedemo) - memset(rb_ptr, 0, nbframes * channels * width); + memset(rb_ptr, 0, nbframes * nchannels * width); } else // 8bit { unsigned char *snd_out = (unsigned char*)rb_ptr; - if (channels == 8) // 7.1 surround + if (nchannels == 8) // 7.1 surround { for (i = 0; i < nbframes; i++, painted_ptr++) { @@ -205,7 +207,7 @@ static void S_ConvertPaintBuffer(portable_sampleframe_t *painted_ptr, void *rb_p val = (int)(painted_ptr->sample[7] * 128.0f) + 128; *snd_out++ = bound(0, val, 255); } } - else if (channels == 6) // 5.1 surround + else if (nchannels == 6) // 5.1 surround { for (i = 0; i < nbframes; i++, painted_ptr++) { @@ -217,7 +219,7 @@ static void S_ConvertPaintBuffer(portable_sampleframe_t *painted_ptr, void *rb_p val = (int)(painted_ptr->sample[5] * 128.0f) + 128; *snd_out++ = bound(0, val, 255); } } - else if (channels == 4) // 4.0 surround + else if (nchannels == 4) // 4.0 surround { for (i = 0; i < nbframes; i++, painted_ptr++) { @@ -227,7 +229,7 @@ static void S_ConvertPaintBuffer(portable_sampleframe_t *painted_ptr, void *rb_p val = (int)(painted_ptr->sample[3] * 128.0f) + 128; *snd_out++ = bound(0, val, 255); } } - else if (channels == 2) // 2.0 stereo + else if (nchannels == 2) // 2.0 stereo { for (i = 0; i < nbframes; i++, painted_ptr++) { @@ -235,7 +237,7 @@ static void S_ConvertPaintBuffer(portable_sampleframe_t *painted_ptr, void *rb_p val = (int)(painted_ptr->sample[1] * 128.0f) + 128; *snd_out++ = bound(0, val, 255); } } - else if (channels == 1) // 1.0 mono + else if (nchannels == 1) // 1.0 mono { for (i = 0;i < nbframes;i++, painted_ptr++) { @@ -245,7 +247,7 @@ static void S_ConvertPaintBuffer(portable_sampleframe_t *painted_ptr, void *rb_p // noise is really really annoying if (cls.timedemo) - memset(rb_ptr, 128, nbframes * channels); + memset(rb_ptr, 128, nbframes * nchannels); } } @@ -360,7 +362,6 @@ void S_MixToBuffer(void *stream, unsigned int bufferframes) // do the actual paint now (may skip work if silent) paint = paintbuffer; - wantframes = totalmixframes; istartframe = 0; for (wantframes = totalmixframes;wantframes > 0;posd += count * speedd, wantframes -= count) { @@ -521,8 +522,10 @@ void S_MixToBuffer(void *stream, unsigned int bufferframes) S_SoftClipPaintBuffer(paintbuffer, totalmixframes, snd_renderbuffer->format.width, snd_renderbuffer->format.channels); +#ifdef CONFIG_VIDEO_CAPTURE if (!snd_usethreadedmixing) S_CaptureAVISound(paintbuffer, totalmixframes); +#endif S_ConvertPaintBuffer(paintbuffer, outbytes, totalmixframes, snd_renderbuffer->format.width, snd_renderbuffer->format.channels);