Mercurial > mplayer.hg
annotate mp3lib/tabinit.c @ 2316:bcb229557e9b
fixed alignment (static variables where sometimes not 8-byte aligned)
added half uv interpolation support
added prefetch
BGR15 support in MMX (untested) (so BGR15,16,24,32 are supported)
special unscaled height version (not much faster but it doesnt interpolate uv vertically)
author | michael |
---|---|
date | Sat, 20 Oct 2001 21:12:09 +0000 |
parents | 03b7e2955a20 |
children | 1320f1b3229d |
rev | line source |
---|---|
1245
03b7e2955a20
Added newest MMX-optimized decore which speedups decoding at least on 13% for any cpu.
nick
parents:
1045
diff
changeset
|
1 real decwin[(512+32)], cos64[32], cos32[16], cos16[8], cos8[4], cos4[2]; |
03b7e2955a20
Added newest MMX-optimized decore which speedups decoding at least on 13% for any cpu.
nick
parents:
1045
diff
changeset
|
2 real *pnts[]={ cos64,cos32,cos16,cos8,cos4 }; |
1 | 3 |
1245
03b7e2955a20
Added newest MMX-optimized decore which speedups decoding at least on 13% for any cpu.
nick
parents:
1045
diff
changeset
|
4 static long intwinbase[] = { |
1 | 5 0, -1, -1, -1, -1, -1, -1, -2, -2, -2, |
6 -2, -3, -3, -4, -4, -5, -5, -6, -7, -7, | |
7 -8, -9, -10, -11, -13, -14, -16, -17, -19, -21, | |
8 -24, -26, -29, -31, -35, -38, -41, -45, -49, -53, | |
9 -58, -63, -68, -73, -79, -85, -91, -97, -104, -111, | |
10 -117, -125, -132, -139, -147, -154, -161, -169, -176, -183, | |
11 -190, -196, -202, -208, -213, -218, -222, -225, -227, -228, | |
12 -228, -227, -224, -221, -215, -208, -200, -189, -177, -163, | |
13 -146, -127, -106, -83, -57, -29, 2, 36, 72, 111, | |
14 153, 197, 244, 294, 347, 401, 459, 519, 581, 645, | |
15 711, 779, 848, 919, 991, 1064, 1137, 1210, 1283, 1356, | |
16 1428, 1498, 1567, 1634, 1698, 1759, 1817, 1870, 1919, 1962, | |
17 2001, 2032, 2057, 2075, 2085, 2087, 2080, 2063, 2037, 2000, | |
18 1952, 1893, 1822, 1739, 1644, 1535, 1414, 1280, 1131, 970, | |
19 794, 605, 402, 185, -45, -288, -545, -814, -1095, -1388, | |
20 -1692, -2006, -2330, -2663, -3004, -3351, -3705, -4063, -4425, -4788, | |
21 -5153, -5517, -5879, -6237, -6589, -6935, -7271, -7597, -7910, -8209, | |
22 -8491, -8755, -8998, -9219, -9416, -9585, -9727, -9838, -9916, -9959, | |
23 -9966, -9935, -9863, -9750, -9592, -9389, -9139, -8840, -8492, -8092, | |
24 -7640, -7134, -6574, -5959, -5288, -4561, -3776, -2935, -2037, -1082, | |
25 -70, 998, 2122, 3300, 4533, 5818, 7154, 8540, 9975, 11455, | |
26 12980, 14548, 16155, 17799, 19478, 21189, 22929, 24694, 26482, 28289, | |
27 30112, 31947, 33791, 35640, 37489, 39336, 41176, 43006, 44821, 46617, | |
28 48390, 50137, 51853, 53534, 55178, 56778, 58333, 59838, 61289, 62684, | |
29 64019, 65290, 66494, 67629, 68692, 69679, 70590, 71420, 72169, 72835, | |
30 73415, 73908, 74313, 74630, 74856, 74992, 75038 }; | |
31 | |
1245
03b7e2955a20
Added newest MMX-optimized decore which speedups decoding at least on 13% for any cpu.
nick
parents:
1045
diff
changeset
|
32 void make_decode_tables(long scaleval) |
1 | 33 { |
34 int i,j,k,kr,divv; | |
35 real *table,*costab; | |
36 | |
37 | |
38 for(i=0;i<5;i++) | |
39 { | |
40 kr=0x10>>i; divv=0x40>>i; | |
41 costab = pnts[i]; | |
42 for(k=0;k<kr;k++) costab[k] = 1.0 / (2.0 * cos(M_PI * ((double) k * 2.0 + 1.0) / (double) divv)); | |
43 } | |
44 | |
45 table = decwin; | |
46 scaleval = -scaleval; | |
47 for(i=0,j=0;i<256;i++,j++,table+=32) | |
48 { | |
1245
03b7e2955a20
Added newest MMX-optimized decore which speedups decoding at least on 13% for any cpu.
nick
parents:
1045
diff
changeset
|
49 if(table < decwin+512+16) |
1 | 50 table[16] = table[0] = (double) intwinbase[j] / 65536.0 * (double) scaleval; |
51 if(i % 32 == 31) | |
52 table -= 1023; | |
53 if(i % 64 == 63) | |
54 scaleval = - scaleval; | |
55 } | |
56 | |
57 for( /* i=256 */ ;i<512;i++,j--,table+=32) | |
58 { | |
59 if(table < decwin+512+16) | |
60 table[16] = table[0] = (double) intwinbase[j] / 65536.0 * (double) scaleval; | |
61 if(i % 32 == 31) | |
62 table -= 1023; | |
63 if(i % 64 == 63) | |
64 scaleval = - scaleval; | |
65 } | |
66 } | |
67 | |
68 |