Mercurial > hg > dmlib
view jmix_c.in.c @ 43:048536ad01e0
Cleanups.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sun, 30 Sep 2012 23:20:22 +0300 |
parents | 32250b436bca |
children |
line wrap: on
line source
/* * miniJSS - Mixing routines in C * Programmed and designed by Matti 'ccr' Hamalainen * (C) Copyright 2006-2007 Tecnic Software productions (TNSP) */ #define JMIXER_INTERPOLATE //#define JMIXER_DEBUG fprintf(stderr, "[%.8x:%.8x / %.8x]: %d\n", FP_GETH(tmpPos), FP_GETL(tmpPos), endPos, sp[FP_GETH(tmpPos)]); #define JMIXER_DEBUG /* Mono / Linear Interpolation */ #define JMIXER_INIT const Sint32 vol = (chn->chVolume * mixer->globalVol) / 256; #ifdef JMIXER_INTERPOLATE #define JMIXER_FUNC_16 tr = (((Sint32) sp[FP_GETH(tmpPos)]) * vol + tr) / (256 * 2); *(ap++) += tr; #define JMIXER_FUNC_8 tr = ((*volTab8)[vol][sp[FP_GETH(tmpPos)]] + tr) / 2; *(ap++) += tr; #else #define JMIXER_FUNC_16 *(ap++) += (((Sint32) sp[FP_GETH(tmpPos)]) * vol) / 256; #define JMIXER_FUNC_8 *(ap++) += (*volTab8)[vol][sp[FP_GETH(tmpPos)]]; #endif #define JMIXER_NAME jvmMix_Mono_C_FW #define JMIXER_NEXT FP_ADD(tmpPos, tmpDelta); #define JMIXER_ENDCOND (FP_GETH(tmpPos) < endPos) #include "jmix_c.h" #define JMIXER_NAME jvmMix_Mono_C_BW #define JMIXER_NEXT FP_SUB(tmpPos, tmpDelta); #define JMIXER_ENDCOND (FP_GETH(tmpPos) > endPos) #include "jmix_c.h" #undef JMIXER_INIT #undef JMIXER_FUNC_16 #undef JMIXER_FUNC_8 /* Stereo / Linear Interpolation */ #define JMIXER_INIT const Sint32 vol_l = (chn->chVolume * mixer->globalVol) / 256, \ vol_r = (chn->chVolume * mixer->globalVol) / 256; #ifdef JMIXER_INTERPOLATE #define JMIXER_FUNC_16 tl = (((Sint32) sp[FP_GETH(tmpPos)]) * vol_l + tl) / (256 * 2); *(ap++) += tl; \ tr = (((Sint32) sp[FP_GETH(tmpPos)]) * vol_r + tr) / (256 * 2); *(ap++) += tr; #define JMIXER_FUNC_8 tl = ((*volTab8)[vol_l][sp[FP_GETH(tmpPos)]] + tl) / 2; *(ap++) += tl; \ tr = ((*volTab8)[vol_r][sp[FP_GETH(tmpPos)]] + tr) / 2; *(ap++) += tr; #else #define JMIXER_FUNC_16 *(ap++) += (((Sint32) sp[FP_GETH(tmpPos)]) * vol_l) / 256; \ *(ap++) += (((Sint32) sp[FP_GETH(tmpPos)]) * vol_r) / 256; #define JMIXER_FUNC_8 *(ap++) += (*volTab8)[vol_l][sp[FP_GETH(tmpPos)]]; \ *(ap++) += (*volTab8)[vol_r][sp[FP_GETH(tmpPos)]]; #endif #define JMIXER_NAME jvmMix_Stereo_C_FW #define JMIXER_NEXT FP_ADD(tmpPos, tmpDelta); #define JMIXER_ENDCOND (FP_GETH(tmpPos) < endPos) #include "jmix_c.h" #define JMIXER_NAME jvmMix_Stereo_C_BW #define JMIXER_NEXT FP_SUB(tmpPos, tmpDelta); #define JMIXER_ENDCOND (FP_GETH(tmpPos) > endPos) #include "jmix_c.h" #undef JMIXER_INIT #undef JMIXER_FUNC_16 #undef JMIXER_FUNC_8 /* Post processing functions */ #define JMIXER_NAME jvmPostProcess_U8_C #define JMIXER_TYPE Uint8 #define JMIXER_FUNCTION \ if (t < JVM_LIMIT_16_NEG) t = JVM_LIMIT_16_NEG; else \ if (t > JVM_LIMIT_16_POS) t = JVM_LIMIT_16_POS; \ *(sp++) = (t + JVM_ADD_16) >> 8; #include "jmix_post.h" #define JMIXER_NAME jvmPostProcess_S8_C #define JMIXER_TYPE Sint8 #define JMIXER_FUNCTION \ if (t < JVM_LIMIT_16_NEG) t = JVM_LIMIT_16_NEG; else \ if (t > JVM_LIMIT_16_POS) t = JVM_LIMIT_16_POS; \ *(sp++) = t >> 8; #include "jmix_post.h" #define JMIXER_NAME jvmPostProcess_U16_C #define JMIXER_TYPE Uint16 #define JMIXER_FUNCTION \ if (t < JVM_LIMIT_16_NEG) t = JVM_LIMIT_16_NEG; else \ if (t > JVM_LIMIT_16_POS) t = JVM_LIMIT_16_POS; \ *(sp++) = t + JVM_ADD_16; #include "jmix_post.h" #define JMIXER_NAME jvmPostProcess_S16_C #define JMIXER_TYPE Sint16 #define JMIXER_FUNCTION \ if (t < JVM_LIMIT_16_NEG) t = JVM_LIMIT_16_NEG; else \ if (t > JVM_LIMIT_16_POS) t = JVM_LIMIT_16_POS; \ *(sp++) = t; #include "jmix_post.h"