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.zip rockbox-5c80a838e4f6217970998df9d2bef44a9dddc795.tar.gz rockbox-5c80a838e4f6217970998df9d2bef44a9dddc795.tar.bz2 rockbox-5c80a838e4f6217970998df9d2bef44a9dddc795.tar.xz | |
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 09563e0..c415db7 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, switch (ape_ctx->compressiontype) { case 2000: - apply_filter_16_11(ape_ctx->fileversion,decoded0,NULL,count); + apply_filter_16_11(ape_ctx->fileversion,0,decoded0,count); break; case 3000: - apply_filter_64_11(ape_ctx->fileversion,decoded0,NULL,count); + apply_filter_64_11(ape_ctx->fileversion,0,decoded0,count); break; case 4000: - apply_filter_32_10(ape_ctx->fileversion,decoded0,NULL,count); - apply_filter_256_13(ape_ctx->fileversion,decoded0,NULL,count); + apply_filter_32_10(ape_ctx->fileversion,0,decoded0,count); + apply_filter_256_13(ape_ctx->fileversion,0,decoded0,count); break; case 5000: - apply_filter_16_11(ape_ctx->fileversion,decoded0,NULL,count); - apply_filter_256_13(ape_ctx->fileversion,decoded0,NULL,count); - apply_filter_1280_15(ape_ctx->fileversion,decoded0,NULL,count); + apply_filter_16_11(ape_ctx->fileversion,0,decoded0,count); + apply_filter_256_13(ape_ctx->fileversion,0,decoded0,count); + apply_filter_1280_15(ape_ctx->fileversion,0,decoded0,count); } /* Now apply the predictor decoding */ @@ -171,22 +171,29 @@ int ICODE_ATTR_DEMAC decode_chunk(struct ape_ctx_t* ape_ctx, switch (ape_ctx->compressiontype) { case 2000: - apply_filter_16_11(ape_ctx->fileversion,decoded0,decoded1,count); + apply_filter_16_11(ape_ctx->fileversion,0,decoded0,count); + apply_filter_16_11(ape_ctx->fileversion,1,decoded1,count); break; case 3000: - apply_filter_64_11(ape_ctx->fileversion,decoded0,decoded1,count); + apply_filter_64_11(ape_ctx->fileversion,0,decoded0,count); + apply_filter_64_11(ape_ctx->fileversion,1,decoded1,count); break; case 4000: - apply_filter_32_10(ape_ctx->fileversion,decoded0,decoded1,count); - apply_filter_256_13(ape_ctx->fileversion,decoded0,decoded1,count); + apply_filter_32_10(ape_ctx->fileversion,0,decoded0,count); + apply_filter_32_10(ape_ctx->fileversion,1,decoded1,count); + apply_filter_256_13(ape_ctx->fileversion,0,decoded0,count); + apply_filter_256_13(ape_ctx->fileversion,1,decoded1,count); break; case 5000: - apply_filter_16_11(ape_ctx->fileversion,decoded0,decoded1,count); - apply_filter_256_13(ape_ctx->fileversion,decoded0,decoded1,count); - apply_filter_1280_15(ape_ctx->fileversion,decoded0,decoded1,count); + apply_filter_16_11(ape_ctx->fileversion,0,decoded0,count); + apply_filter_16_11(ape_ctx->fileversion,1,decoded1,count); + apply_filter_256_13(ape_ctx->fileversion,0,decoded0,count); + apply_filter_256_13(ape_ctx->fileversion,1,decoded1,count); + apply_filter_1280_15(ape_ctx->fileversion,0,decoded0,count); + apply_filter_1280_15(ape_ctx->fileversion,1,decoded1,count); } /* Now apply the predictor decoding */ |