comparison src/xs_filter.c @ 660:b0743dc9165d

Change tabs to 4 spaces, everywhere.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 02 Apr 2008 22:10:05 +0300
parents e5b302358312
children
comparison
equal deleted inserted replaced
659:04ea91a61225 660:b0743dc9165d
23 #include "xs_filter.h" 23 #include "xs_filter.h"
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); \ 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 xs_filter_mbn = (tmp + xs_filter_mbn) / (oversampleFactor + 1); \ 35 xs_filter_mbn = (tmp + xs_filter_mbn) / (oversampleFactor + 1); \
36 *(dp_ ## T ## P ++) = ((g ## K ## int ## P) xs_filter_mbn) Q ; \ 36 *(dp_ ## T ## P ++) = ((g ## K ## int ## P) xs_filter_mbn) Q ; \
37 } 37 }
38 38
39 39
40 static gint32 xs_filter_mbn = 0; 40 static gint32 xs_filter_mbn = 0;
41 41
42 42
43 gint xs_filter_rateconv(void *destBuf, void *srcBuf, const AFormat audioFormat, 43 gint xs_filter_rateconv(void *destBuf, void *srcBuf, const AFormat audioFormat,
44 const gint oversampleFactor, const gint bufSize) 44 const gint oversampleFactor, const gint bufSize)
45 { 45 {
46 static gint32 tmp; 46 static gint32 tmp;
47 XS_FVAR(s, 8,); 47 XS_FVAR(s, 8,);
48 XS_FVAR(u, 8, u); 48 XS_FVAR(u, 8, u);
49 XS_FVAR(s, 16,); 49 XS_FVAR(s, 16,);
50 XS_FVAR(u, 16, u); 50 XS_FVAR(u, 16, u);
51 gint i; 51 gint i;
52 gint dataSize = bufSize; 52 gint dataSize = bufSize;
53 53
54 if (dataSize <= 0) 54 if (dataSize <= 0)
55 return dataSize; 55 return dataSize;
56 56
57 switch (audioFormat) { 57 switch (audioFormat) {
58 case FMT_U8: 58 case FMT_U8:
59 XS_FILTER1(u, 8, u, ^0x80) 59 XS_FILTER1(u, 8, u, ^0x80)
60 break; 60 break;
61 61
62 case FMT_S8: 62 case FMT_S8:
63 XS_FILTER1(s, 8,,) 63 XS_FILTER1(s, 8,,)
64 break; 64 break;
65 65
66 66
67 case FMT_U16_BE: 67 case FMT_U16_BE:
68 case FMT_U16_LE: 68 case FMT_U16_LE:
69 case FMT_U16_NE: 69 case FMT_U16_NE:
70 XS_FILTER1(u, 16, u, ^0x8000) 70 XS_FILTER1(u, 16, u, ^0x8000)
71 break; 71 break;
72 72
73 case FMT_S16_BE: 73 case FMT_S16_BE:
74 case FMT_S16_LE: 74 case FMT_S16_LE:
75 case FMT_S16_NE: 75 case FMT_S16_NE:
76 XS_FILTER1(s, 16,,) 76 XS_FILTER1(s, 16,,)
77 break; 77 break;
78 78
79 default: 79 default:
80 return -1; 80 return -1;
81 } 81 }
82 82
83 return 0; 83 return 0;
84 } 84 }