summaryrefslogtreecommitdiff
path: root/apps/codecs/demac/libdemac/decoder.c
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2010-03-03 21:20:13 +0000
committerJens Arnold <amiconn@rockbox.org>2010-03-03 21:20:13 +0000
commit5c80a838e4f6217970998df9d2bef44a9dddc795 (patch)
treeb357e7f9ded23d59f7a76655fa983efb4a088b57 /apps/codecs/demac/libdemac/decoder.c
parent0030ae28b551df94defe25c04c1859ba508e632e (diff)
downloadrockbox-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.c35
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 */