Mercurial > hg > dmlib
diff jmix_c.h @ 0:32250b436bca
Initial re-import.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 28 Sep 2012 01:54:23 +0300 |
parents | |
children | fb5200deeda8 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jmix_c.h Fri Sep 28 01:54:23 2012 +0300 @@ -0,0 +1,55 @@ +/* + * 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 *, Sint32 *, const int, const Uint32); +#else +int JMIXER_NAME (JSSMixer *mixer, JSSChannel *chn, Sint32 *addBuffer, const int mixLength, const Uint32 endPos) +{ + const JSSVolumeTable *volTab8 = (const JSSVolumeTable *) &(mixer->volTab8); + Sint32 *ap = addBuffer; + Sint32 tr = chn->chPrevR, tl = chn->chPrevL; + DMFixedPoint tmpPos = chn->chPos; + const DMFixedPoint tmpDelta = chn->chDeltaO; + int strideLength = 0; + + if (chn->chFlags & jsf16bit) + { + Sint16 *sp = (Sint16 *) chn->chData; + JMIXER_INIT + + while (strideLength < mixLength && JMIXER_ENDCOND) + { + JMIXER_FUNC_16 + JMIXER_DEBUG + JMIXER_NEXT + strideLength++; + } + } + else + { + Uint8 *sp = (Uint8 *) chn->chData; + JMIXER_INIT + + while (strideLength < mixLength && JMIXER_ENDCOND) + { + JMIXER_FUNC_8 + JMIXER_DEBUG + JMIXER_NEXT + strideLength++; + } + + } + + chn->chPos.dw = tmpPos.dw; + chn->chPrevR = tr; chn->chPrevL = tl; + return strideLength; +} + +#undef JMIXER_NAME +#undef JMIXER_NEXT +#undef JMIXER_ENDCOND +#endif