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;