Mercurial > hg > xmms-sid
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 } |