Mercurial > hg > dmlib
view jmixtmpl_c.h @ 230:585e0a95be36
Optimize mixing slightly.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Mon, 08 Oct 2012 03:01:30 +0300 |
parents | 301de8c0cd01 |
children | e3c1aa3ba88e |
line wrap: on
line source
/* * miniJSS - Mixing routine in C, innerloop template * Programmed and designed by Matti 'ccr' Hamalainen * (C) Copyright 2006-2007 Tecnic Software productions (TNSP) */ #ifdef JMIXER_HEADER int JMIXER_NAME (JSSMixer *, JSSChannel *, JMIXER_ADDBUF_TYPE *, const int, const Sint32); #else int JMIXER_NAME (JSSMixer *mixer, JSSChannel *chn, JMIXER_ADDBUF_TYPE *addBuffer, const int mixLength, const Sint32 endPos) { const DMFixedPoint tmpDelta = chn->chDeltaO, tmpDeltaV = chn->chDeltaV; DMFixedPoint tmpPos = chn->chPos, tmpVolume = chn->chVolume; JMIXER_ADDBUF_TYPE *ap = addBuffer, *tr = chn->chPrevR, *tl = chn->chPrevL; int strideLength = 0; JMIXER_SAMPLE_TYPE *sp = (JMIXER_SAMPLE_TYPE *) chn->chData; JMIXER_INIT if (chn->chVolumeD > 0) { const int tmpLength = chn->chVolumeD < mixLength ? chn->chVolumeD : mixLength; chn->chVolumeD -= tmpLength; while (strideLength < tmpLength && JMIXER_ENDCOND) { JMIXER_FUNC JMIXER_DEBUG JMIXER_NEXT FP_ADD(tmpVolume, tmpDeltaV); strideLength++; } } while (strideLength < mixLength && JMIXER_ENDCOND) { JMIXER_FUNC JMIXER_DEBUG JMIXER_NEXT strideLength++; } chn->chPos = tmpPos; chn->chVolume = tmpVolume; return strideLength; } #endif #undef JMIXER_NAME #undef JMIXER_NEXT #undef JMIXER_ENDCOND