Mercurial > hg > xmms-sid
comparison src/xs_filter.c @ 331:5e82b21d1914
Minor fix to filter (mean value does not get reset on every filtered audio block)
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 22 Sep 2005 01:53:05 +0000 |
parents | 7888e5d973b9 |
children | b1a858b8cb1a |
comparison
equal
deleted
inserted
replaced
330:e0abd282d6b7 | 331:5e82b21d1914 |
---|---|
24 | 24 |
25 /* Let's do some preprocessor magic :) */ | 25 /* Let's do some preprocessor magic :) */ |
26 #define XS_FVAR(T, P, K) g ## K ## int ## P *sp_ ## T ## P , *dp_ ## T ## P | 26 #define XS_FVAR(T, P, K) g ## K ## int ## P *sp_ ## T ## P , *dp_ ## T ## P |
27 | 27 |
28 #define XS_FILTER1(T, P, K, Q) \ | 28 #define XS_FILTER1(T, P, K, Q) \ |
29 dataSize /= sizeof(g ## K ## int ## P); tmpo = 0; \ | 29 dataSize /= sizeof(g ## K ## int ## P); \ |
30 sp_ ## T ## P = (g ## K ## int ## P *) srcBuf; \ | 30 sp_ ## T ## P = (g ## K ## int ## P *) srcBuf; \ |
31 dp_ ## T ## P = (g ## K ## int ## P *) destBuf; \ | 31 dp_ ## T ## P = (g ## K ## int ## P *) destBuf; \ |
32 while (dataSize-- > 0) { \ | 32 while (dataSize-- > 0) { \ |
33 for (tmp = 0, i = 0; i < oversampleFactor; i++) \ | 33 for (tmp = 0, i = 0; i < oversampleFactor; i++) \ |
34 tmp += (gint32) ((gint ## P) (*(sp_ ## T ## P ++) Q)); \ | 34 tmp += (gint32) ((gint ## P) (*(sp_ ## T ## P ++) Q)); \ |
35 tmpo = (tmp + tmpo) / (oversampleFactor + 1); \ | 35 xs_filter_mbn = (tmp + xs_filter_mbn) / (oversampleFactor + 1); \ |
36 *(dp_ ## T ## P ++) = ((g ## K ## int ## P) tmpo) Q ; \ | 36 *(dp_ ## T ## P ++) = ((g ## K ## int ## P) xs_filter_mbn) Q ; \ |
37 } | 37 } |
38 | |
39 | |
40 static gint32 xs_filter_mbn = 0; | |
41 | |
38 | 42 |
39 gint xs_filter_rateconv(void *destBuf, void *srcBuf, const AFormat audioFormat, const gint oversampleFactor, const gint bufSize) | 43 gint xs_filter_rateconv(void *destBuf, void *srcBuf, const AFormat audioFormat, const gint oversampleFactor, const gint bufSize) |
40 { | 44 { |
41 gint32 tmp, tmpo; | 45 static gint32 tmp; |
42 XS_FVAR(s,8,); | 46 XS_FVAR(s,8,); |
43 XS_FVAR(u,8,u); | 47 XS_FVAR(u,8,u); |
44 XS_FVAR(s,16,); | 48 XS_FVAR(s,16,); |
45 XS_FVAR(u,16,u); | 49 XS_FVAR(u,16,u); |
46 gint i; | 50 gint i; |