diff options
author | Andree Buschmann <AndreeBuschmann@t-online.de> | 2009-08-29 19:44:27 +0000 |
---|---|---|
committer | Andree Buschmann <AndreeBuschmann@t-online.de> | 2009-08-29 19:44:27 +0000 |
commit | f4774bf5bf8fff2b45a6cee8e0b064b560b45809 (patch) | |
tree | 4733101102473cc94e08dc3cc4a4a34b988a9396 /apps/codecs/libatrac/atrac3data_fixed.h | |
parent | eb3cb724e8d4b60f20356944173e7cddddb51398 (diff) | |
download | rockbox-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.h | 121 |
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 */ |
26 | static const int32_t qmf_48tap_half_fix[24] ICONST_ATTR = { | 26 | static 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 */ |
34 | static 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, | 35 | static 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 */ |