diff options
author | Jens Arnold <amiconn@rockbox.org> | 2010-03-03 21:20:13 +0000 |
---|---|---|
committer | Jens Arnold <amiconn@rockbox.org> | 2010-03-03 21:20:13 +0000 |
commit | 5c80a838e4f6217970998df9d2bef44a9dddc795 (patch) | |
tree | b357e7f9ded23d59f7a76655fa983efb4a088b57 /apps/codecs/demac/libdemac/decoder.c | |
parent | 0030ae28b551df94defe25c04c1859ba508e632e (diff) | |
download | rockbox-5c80a838e4f6217970998df9d2bef44a9dddc795.tar.gz rockbox-5c80a838e4f6217970998df9d2bef44a9dddc795.zip |
libdemac: Separate filtering calls per channel in preparation for the dual-core split on PP. This also means less inlining, and hence speeds up decoding on single core slightly, due to better caching behaviour.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25005 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/demac/libdemac/decoder.c')
-rw-r--r-- | apps/codecs/demac/libdemac/decoder.c | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/apps/codecs/demac/libdemac/decoder.c b/apps/codecs/demac/libdemac/decoder.c index 09563e0112..c415db774a 100644 --- a/apps/codecs/demac/libdemac/decoder.c +++ b/apps/codecs/demac/libdemac/decoder.c | |||
@@ -118,22 +118,22 @@ int ICODE_ATTR_DEMAC decode_chunk(struct ape_ctx_t* ape_ctx, | |||
118 | switch (ape_ctx->compressiontype) | 118 | switch (ape_ctx->compressiontype) |
119 | { | 119 | { |
120 | case 2000: | 120 | case 2000: |
121 | apply_filter_16_11(ape_ctx->fileversion,decoded0,NULL,count); | 121 | apply_filter_16_11(ape_ctx->fileversion,0,decoded0,count); |
122 | break; | 122 | break; |
123 | 123 | ||
124 | case 3000: | 124 | case 3000: |
125 | apply_filter_64_11(ape_ctx->fileversion,decoded0,NULL,count); | 125 | apply_filter_64_11(ape_ctx->fileversion,0,decoded0,count); |
126 | break; | 126 | break; |
127 | 127 | ||
128 | case 4000: | 128 | case 4000: |
129 | apply_filter_32_10(ape_ctx->fileversion,decoded0,NULL,count); | 129 | apply_filter_32_10(ape_ctx->fileversion,0,decoded0,count); |
130 | apply_filter_256_13(ape_ctx->fileversion,decoded0,NULL,count); | 130 | apply_filter_256_13(ape_ctx->fileversion,0,decoded0,count); |
131 | break; | 131 | break; |
132 | 132 | ||
133 | case 5000: | 133 | case 5000: |
134 | apply_filter_16_11(ape_ctx->fileversion,decoded0,NULL,count); | 134 | apply_filter_16_11(ape_ctx->fileversion,0,decoded0,count); |
135 | apply_filter_256_13(ape_ctx->fileversion,decoded0,NULL,count); | 135 | apply_filter_256_13(ape_ctx->fileversion,0,decoded0,count); |
136 | apply_filter_1280_15(ape_ctx->fileversion,decoded0,NULL,count); | 136 | apply_filter_1280_15(ape_ctx->fileversion,0,decoded0,count); |
137 | } | 137 | } |
138 | 138 | ||
139 | /* Now apply the predictor decoding */ | 139 | /* Now apply the predictor decoding */ |
@@ -171,22 +171,29 @@ int ICODE_ATTR_DEMAC decode_chunk(struct ape_ctx_t* ape_ctx, | |||
171 | switch (ape_ctx->compressiontype) | 171 | switch (ape_ctx->compressiontype) |
172 | { | 172 | { |
173 | case 2000: | 173 | case 2000: |
174 | apply_filter_16_11(ape_ctx->fileversion,decoded0,decoded1,count); | 174 | apply_filter_16_11(ape_ctx->fileversion,0,decoded0,count); |
175 | apply_filter_16_11(ape_ctx->fileversion,1,decoded1,count); | ||
175 | break; | 176 | break; |
176 | 177 | ||
177 | case 3000: | 178 | case 3000: |
178 | apply_filter_64_11(ape_ctx->fileversion,decoded0,decoded1,count); | 179 | apply_filter_64_11(ape_ctx->fileversion,0,decoded0,count); |
180 | apply_filter_64_11(ape_ctx->fileversion,1,decoded1,count); | ||
179 | break; | 181 | break; |
180 | 182 | ||
181 | case 4000: | 183 | case 4000: |
182 | apply_filter_32_10(ape_ctx->fileversion,decoded0,decoded1,count); | 184 | apply_filter_32_10(ape_ctx->fileversion,0,decoded0,count); |
183 | apply_filter_256_13(ape_ctx->fileversion,decoded0,decoded1,count); | 185 | apply_filter_32_10(ape_ctx->fileversion,1,decoded1,count); |
186 | apply_filter_256_13(ape_ctx->fileversion,0,decoded0,count); | ||
187 | apply_filter_256_13(ape_ctx->fileversion,1,decoded1,count); | ||
184 | break; | 188 | break; |
185 | 189 | ||
186 | case 5000: | 190 | case 5000: |
187 | apply_filter_16_11(ape_ctx->fileversion,decoded0,decoded1,count); | 191 | apply_filter_16_11(ape_ctx->fileversion,0,decoded0,count); |
188 | apply_filter_256_13(ape_ctx->fileversion,decoded0,decoded1,count); | 192 | apply_filter_16_11(ape_ctx->fileversion,1,decoded1,count); |
189 | apply_filter_1280_15(ape_ctx->fileversion,decoded0,decoded1,count); | 193 | apply_filter_256_13(ape_ctx->fileversion,0,decoded0,count); |
194 | apply_filter_256_13(ape_ctx->fileversion,1,decoded1,count); | ||
195 | apply_filter_1280_15(ape_ctx->fileversion,0,decoded0,count); | ||
196 | apply_filter_1280_15(ape_ctx->fileversion,1,decoded1,count); | ||
190 | } | 197 | } |
191 | 198 | ||
192 | /* Now apply the predictor decoding */ | 199 | /* Now apply the predictor decoding */ |