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;