view jmixtmpl_c.h @ 47:1936fc1a6c18

Renamed again, bah.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 01 Oct 2012 01:18:28 +0300
parents jmixtmpl_c.c@b30430da2815
children 033c660c25f5
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 *, Sint32 *, const int, const Sint32);
#else
int JMIXER_NAME (JSSMixer *mixer, JSSChannel *chn, Sint32 *addBuffer, const int mixLength, const Sint32 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;
}
#endif

#undef JMIXER_NAME   
#undef JMIXER_NEXT   
#undef JMIXER_ENDCOND