Mercurial > hg > dmlib
diff jssmix.c @ 51:36e2f910219c
A non-working implementation of floating point audio mixing.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Mon, 01 Oct 2012 03:48:21 +0300 |
parents | 033c660c25f5 |
children | 1d17ecc5486c |
line wrap: on
line diff
--- a/jssmix.c Mon Oct 01 03:46:10 2012 +0300 +++ b/jssmix.c Mon Oct 01 03:48:21 2012 +0300 @@ -27,9 +27,10 @@ int mixerID; int outFormat; int outChannels; - int (*jvmMixChannel_FW)(JSSMixer *, JSSChannel *, Sint32 *, const int, const Sint32); - int (*jvmMixChannel_BW)(JSSMixer *, JSSChannel *, Sint32 *, const int, const Sint32); - void (*jvmPostProcess)(Sint32 *, void *, const int); + + int (*jvmMixChannel_FW)(JSSMixer *, JSSChannel *, JMIXER_ADDBUF_TYPE *, const int, const Sint32); + int (*jvmMixChannel_BW)(JSSMixer *, JSSChannel *, JMIXER_ADDBUF_TYPE *, const int, const Sint32); + void (*jvmPostProcess)(JMIXER_ADDBUF_TYPE *, void *, const int); } JSSMixingRoutine; @@ -148,7 +149,7 @@ // Allocate addBuffer mixer->addBufSize = outChannels * outFreq; - mixer->addBuffer = dmCalloc(mixer->addBufSize, sizeof(Sint32)); + mixer->addBuffer = dmCalloc(mixer->addBufSize, sizeof(JMIXER_ADDBUF_TYPE)); if (mixer->addBuffer == NULL) { JSSERROR(DMERR_MALLOC, NULL, @@ -228,10 +229,10 @@ } -static void jvmMixChannel(JSSMixer *mixer, JSSChannel *chn, Sint32 *addBuffer, const int mixLength) +static void jvmMixChannel(JSSMixer *mixer, JSSChannel *chn, JMIXER_ADDBUF_TYPE *addBuffer, const int mixLength) { int mixDone = mixLength, mixResult; - Sint32 *ab = addBuffer; + JMIXER_ADDBUF_TYPE *ab = addBuffer; if (!chn->chPlaying || chn->chMute) return; @@ -361,7 +362,7 @@ void jvmRenderAudio(JSSMixer *mixer, void *mixBuffer, const int mixLength) { int i, blockLength, mixLeft; - Sint32 *ab; + JMIXER_ADDBUF_TYPE *ab; JSS_LOCK(mixer); @@ -371,7 +372,7 @@ assert(mixLength * mixer->outChannels < mixer->addBufSize); // Clear mixer->addBuffer - memset(mixer->addBuffer, 0, mixLength * mixer->outChannels * sizeof(Sint32)); + memset(mixer->addBuffer, 0, mixLength * mixer->outChannels * sizeof(JMIXER_ADDBUF_TYPE)); ab = mixer->addBuffer; mixLeft = mixLength;