summaryrefslogtreecommitdiff
path: root/apps/codecs/libatrac/atrac3data_fixed.h
diff options
context:
space:
mode:
authorAndree Buschmann <AndreeBuschmann@t-online.de>2009-08-29 19:44:27 +0000
committerAndree Buschmann <AndreeBuschmann@t-online.de>2009-08-29 19:44:27 +0000
commitf4774bf5bf8fff2b45a6cee8e0b064b560b45809 (patch)
tree4733101102473cc94e08dc3cc4a4a34b988a9396 /apps/codecs/libatrac/atrac3data_fixed.h
parenteb3cb724e8d4b60f20356944173e7cddddb51398 (diff)
downloadrockbox-f4774bf5bf8fff2b45a6cee8e0b064b560b45809.tar.gz
rockbox-f4774bf5bf8fff2b45a6cee8e0b064b560b45809.zip
Submit interim version of FS#10565. Performance optimization of atrac3 decoder for ARM. Introduce ASM routines for multiplications and two synthesis loops, refactured parts of synthesis and windowing. Speeds up decoding by a factor of 2.4 on PP502x.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22548 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/libatrac/atrac3data_fixed.h')
-rw-r--r--apps/codecs/libatrac/atrac3data_fixed.h121
1 files changed, 29 insertions, 92 deletions
diff --git a/apps/codecs/libatrac/atrac3data_fixed.h b/apps/codecs/libatrac/atrac3data_fixed.h
index 561c45a87d..f0924a5190 100644
--- a/apps/codecs/libatrac/atrac3data_fixed.h
+++ b/apps/codecs/libatrac/atrac3data_fixed.h
@@ -22,102 +22,39 @@ static const int32_t SFTable_fixed[64] ICONST_ATTR = {
22}; 22};
23 23
24/* transform data */ 24/* transform data */
25/* floating point values scaled by 2^31 */ 25/* floating point values scaled by 2^31 */
26static const int32_t qmf_48tap_half_fix[24] ICONST_ATTR = { 26static const int32_t qmf_48tap_half_fix[24] ICONST_ATTR = {
27 0xffff855e, 0xfffcfbca, 0xfffe28eb, 0x9de6b, 0x7f028, 0xffe40d08, 27 0xffff855e, 0xfffcfbca, 0xfffe28eb, 0x0009de6b, 0x0007f028, 0xffe40d08,
28 0xffeef140, 0x42a692, 0x19ab1f, 0xff75dec7, 0xffe738f5, 0x100e928, 28 0xffeef140, 0x0042a692, 0x0019ab1f, 0xff75dec7, 0xffe738f5, 0x0100e928,
29 0xfffdfedf, 0xfe478b84, 0x50b279, 0x2c83f88, 0xff005ad7, 0xfba2ee80, 29 0xfffdfedf, 0xfe478b84, 0x0050b279, 0x02c83f88, 0xff005ad7, 0xfba2ee80,
30 0x2685970, 0x6f42798, 0xfa6b6f10, 0xf3475f80, 0x10e7f7c0, 0x3b6c44c0 30 0x02685970, 0x06f42798, 0xfa6b6f10, 0xf3475f80, 0x10e7f7c0, 0x3b6c44c0
31}; 31};
32 32
33/* mdct window scaled by 2^31 */ 33/* mdct window scaled by 2^31 */
34static const int32_t window_lookup[512] ICONST_ATTR = { 34/* Remark: The preceding sign corrects the sign of the hexadecimal values */
35 0xffffb10c, 0xfffd394b, 0xfff8494f, 0xfff0e025, 0xffe6fc5f, 0xffda9c15, 35static const int32_t window_lookup[128] ICONST_ATTR = {
36 0xffcbbce6, 0xffba5bf4, 0xffa675e8, 0xff9006f0, 0xff770aba, 0xff5b7c7e, 36 -0xffffb10c, -0xfffd394b, -0xfff8494f, -0xfff0e025, -0xffe6fc5f, -0xffda9c15,
37 0xff3d56f2, 0xff1c9452, 0xfef92e59, 0xfed31e45, 0xfeaa5cd5, 0xfe7ee247, 37 -0xffcbbce6, -0xffba5bf4, -0xffa675e8, -0xff9006f0, -0xff770aba, -0xff5b7c7e,
38 0xfe50a657, 0xfe1fa041, 0xfdebc6c1, 0xfdb5100d, 0xfd7b71d5, 0xfd3ee149, 38 -0xff3d56f2, -0xff1c9452, -0xfef92e59, -0xfed31e45, -0xfeaa5cd5, -0xfe7ee247,
39 0xfcff5311, 0xfcbcbb49, 0xfc770d99, 0xfc2e3d15, 0xfbe23c39, 0xfb92fd29, 39 -0xfe50a657, -0xfe1fa041, -0xfdebc6c1, -0xfdb5100d, -0xfd7b71d5, -0xfd3ee149,
40 0xfb407141, 0xfaea8989, 0xfa913661, 0xfa3467b1, 0xf9d40cd9, 0xf9701499, 40 -0xfcff5311, -0xfcbcbb49, -0xfc770d99, -0xfc2e3d15, -0xfbe23c39, -0xfb92fd29,
41 0xf9086d41, 0xf89d04a9, 0xf82dc7f1, 0xf7baa3e1, 0xf74384b1, 0xf6c85611, 41 -0xfb407141, -0xfaea8989, -0xfa913661, -0xfa3467b1, -0xf9d40cd9, -0xf9701499,
42 0xf6490321, 0xf5c576b1, 0xf53d9b21, 0xf4b15a01, 0xf4209ce1, 0xf38b4c71, 42 -0xf9086d41, -0xf89d04a9, -0xf82dc7f1, -0xf7baa3e1, -0xf74384b1, -0xf6c85611,
43 0xf2f15171, 0xf2529411, 0xf1aefbf1, 0xf10670a1, 0xf058d941, 0xefa61cc1, 43 -0xf6490321, -0xf5c576b1, -0xf53d9b21, -0xf4b15a01, -0xf4209ce1, -0xf38b4c71,
44 0xeeee21c1, 0xee30cec1, 0xed6e0a41, 0xeca5ba61, 0xebd7c5c1, 0xeb041241, 44 -0xf2f15171, -0xf2529411, -0xf1aefbf1, -0xf10670a1, -0xf058d941, -0xefa61cc1,
45 0xea2a8601, 0xe94b0861, 0xe8657f61, 0xe779d241, 0xe687e861, 0xe58fa9e1, 45 -0xeeee21c1, -0xee30cec1, -0xed6e0a41, -0xeca5ba61, -0xebd7c5c1, -0xeb041241,
46 0xe490fec1, 0xe38bd101, 0xe28009c1, 0xe16d93e1, 0xe0545ba1, 0xdf344dc1, 46 -0xea2a8601, -0xe94b0861, -0xe8657f61, -0xe779d241, -0xe687e861, -0xe58fa9e1,
47 0xde0d5881, 0xdcdf6bc1, 0xdbaa7801, 0xda6e70c1, 0xd92b4ac1, 0xd7e0fc81, 47 -0xe490fec1, -0xe38bd101, -0xe28009c1, -0xe16d93e1, -0xe0545ba1, -0xdf344dc1,
48 0xd68f7ec1, 0xd536cd41, 0xd3d6e5c1, 0xd26fc901, 0xd10179c1, 0xcf8bff41, 48 -0xde0d5881, -0xdcdf6bc1, -0xdbaa7801, -0xda6e70c1, -0xd92b4ac1, -0xd7e0fc81,
49 0xce0f6301, 0xcc8bb241, 0xcb00fdc1, 0xc96f5b01, 0xc7d6e141, 0xc637af41, 49 -0xd68f7ec1, -0xd536cd41, -0xd3d6e5c1, -0xd26fc901, -0xd10179c1, -0xcf8bff41,
50 0xc491e4c1, 0xc2e5a801, 0xc1332401, 0xbf7a8701, 0xbdbc0681, 0xbbf7da01, 50 -0xce0f6301, -0xcc8bb241, -0xcb00fdc1, -0xc96f5b01, -0xc7d6e141, -0xc637af41,
51 0xba2e4181, 0xb85f7f81, 0xb68bde01, 0xb4b3a981, 0xb2d73781, 0xb0f6df01, 51 -0xc491e4c1, -0xc2e5a801, -0xc1332401, -0xbf7a8701, -0xbdbc0681, -0xbbf7da01,
52 0xaf12ff01, 0xad2bfa81, 0xab423981, 0xa9562981, 0xa7683c01, 0xa578e701, 52 -0xba2e4181, -0xb85f7f81, -0xb68bde01, -0xb4b3a981, -0xb2d73781, -0xb0f6df01,
53 0xa388a681, 0xa197f801, 0x9fa75e81, 0x9db75f01, 0x9bc88201, 0x99db5301, 53 -0xaf12ff01, -0xad2bfa81, -0xab423981, -0xa9562981, -0xa7683c01, -0xa578e701,
54 0x97f06001, 0x96083601, 0x94236601, 0x92427f81, 0x90661481, 0x8e8eb481, 54 -0xa388a681, -0xa197f801, -0x9fa75e81, -0x9db75f01, -0x9bc88201, -0x99db5301,
55 0x8cbced01, 0x8af14d81, 0x892c5f81, 0x876eab01, 0x85b8b681, 0x840b0301, 55 -0x97f06001, -0x96083601, -0x94236601, -0x92427f81, -0x90661481, -0x8e8eb481,
56 0x82660c01, 0x80ca4a01, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 56 -0x8cbced01, -0x8af14d81, -0x892c5f81, -0x876eab01, -0x85b8b681, -0x840b0301,
57 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 57 -0x82660c01, -0x80ca4a01,
58 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
59 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
60 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
61 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
62 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
63 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
64 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
65 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
66 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
67 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
68 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
69 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
70 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
71 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
72 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
73 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
74 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
75 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
76 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
77 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
78 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
79 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
80 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
81 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
82 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
83 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
84 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
85 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
86 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
87 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
88 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
89 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
90 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
91 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
92 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
93 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
94 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
95 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
96 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
97 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
98 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
99 0x80ca4a01, 0x82660c01, 0x840b0301, 0x85b8b681, 0x876eab01, 0x892c5f81,
100 0x8af14d81, 0x8cbced01, 0x8e8eb481, 0x90661481, 0x92427f81, 0x94236601,
101 0x96083601, 0x97f06001, 0x99db5301, 0x9bc88201, 0x9db75f01, 0x9fa75e81,
102 0xa197f801, 0xa388a681, 0xa578e701, 0xa7683c01, 0xa9562981, 0xab423981,
103 0xad2bfa81, 0xaf12ff01, 0xb0f6df01, 0xb2d73781, 0xb4b3a981, 0xb68bde01,
104 0xb85f7f81, 0xba2e4181, 0xbbf7da01, 0xbdbc0681, 0xbf7a8701, 0xc1332401,
105 0xc2e5a801, 0xc491e4c1, 0xc637af41, 0xc7d6e141, 0xc96f5b01, 0xcb00fdc1,
106 0xcc8bb241, 0xce0f6301, 0xcf8bff41, 0xd10179c1, 0xd26fc901, 0xd3d6e5c1,
107 0xd536cd41, 0xd68f7ec1, 0xd7e0fc81, 0xd92b4ac1, 0xda6e70c1, 0xdbaa7801,
108 0xdcdf6bc1, 0xde0d5881, 0xdf344dc1, 0xe0545ba1, 0xe16d93e1, 0xe28009c1,
109 0xe38bd101, 0xe490fec1, 0xe58fa9e1, 0xe687e861, 0xe779d241, 0xe8657f61,
110 0xe94b0861, 0xea2a8601, 0xeb041241, 0xebd7c5c1, 0xeca5ba61, 0xed6e0a41,
111 0xee30cec1, 0xeeee21c1, 0xefa61cc1, 0xf058d941, 0xf10670a1, 0xf1aefbf1,
112 0xf2529411, 0xf2f15171, 0xf38b4c71, 0xf4209ce1, 0xf4b15a01, 0xf53d9b21,
113 0xf5c576b1, 0xf6490321, 0xf6c85611, 0xf74384b1, 0xf7baa3e1, 0xf82dc7f1,
114 0xf89d04a9, 0xf9086d41, 0xf9701499, 0xf9d40cd9, 0xfa3467b1, 0xfa913661,
115 0xfaea8989, 0xfb407141, 0xfb92fd29, 0xfbe23c39, 0xfc2e3d15, 0xfc770d99,
116 0xfcbcbb49, 0xfcff5311, 0xfd3ee149, 0xfd7b71d5, 0xfdb5100d, 0xfdebc6c1,
117 0xfe1fa041, 0xfe50a657, 0xfe7ee247, 0xfeaa5cd5, 0xfed31e45, 0xfef92e59,
118 0xff1c9452, 0xff3d56f2, 0xff5b7c7e, 0xff770aba, 0xff9006f0, 0xffa675e8,
119 0xffba5bf4, 0xffcbbce6, 0xffda9c15, 0xffe6fc5f, 0xfff0e025, 0xfff8494f,
120 0xfffd394b, 0xffffb10c,
121}; 58};
122 59
123/* Gain tables scaled by 2^16 */ 60/* Gain tables scaled by 2^16 */