Mercurial > mplayer.hg
annotate mp3lib/tabinit_MMX.c @ 7964:143d730908ae
here is a somewhat generic equalizer implementation for the X11 vo drivers
using the window's colormap (DirectColor).
this method is using the video card's hardware gamma ramp so it involves
no performance penalties at all.
patch by lucho <lucho@haemimont.bg>
author | arpi |
---|---|
date | Tue, 29 Oct 2002 20:27:47 +0000 |
parents | 3f677202418b |
children | 94564cc01c07 |
rev | line source |
---|---|
4140 | 1 /* |
2 * This code was taken from http://www.mpg123.org | |
3 * See ChangeLog of mpg123-0.59s-pre.1 for detail | |
4 * Applied to mplayer by Nick Kurshev <nickols_k@mail.ru> | |
5 */ | |
4246
3f677202418b
mangling in mp3lib + stdcall undefined fix with cygwin
atmos4
parents:
4141
diff
changeset
|
6 #include "../mangle.h" |
4140 | 7 |
8 long __attribute__((aligned(8))) decwins [544]; | |
9 | |
10 static long decwin [544]; | |
11 static short intwinbase_MMX[] = | |
12 { | |
13 0, -1, -1, -1, -1, -1, -1, -2, | |
14 -2, -2, -2, -3, -3, -4, -4, -5, | |
15 -5, -6, -7, -7, -8, -9, -10, -11, | |
16 -13, -14, -16, -17, -19, -21, -24, -26, | |
17 -29, -31, -35, -38, -41, -45, -49, -53, | |
18 -58, -63, -68, -73, -79, -85, -91, -97, | |
19 -104, -111, -117, -125, -132, -139, -147, -154, | |
20 -161, -169, -176, -183, -190, -196, -202, -208, | |
21 -213, -218, -222, -225, -227, -228, -228, -227, | |
22 -224, -221, -215, -208, -200, -189, -177, -163, | |
23 -146, -127, -106, -83, -57, -29, 2, 36, | |
24 72, 111, 153, 197, 244, 294, 347, 401, | |
25 459, 519, 581, 645, 711, 779, 848, 919, | |
26 991, 1064, 1137, 1210, 1283, 1356, 1428, 1498, | |
27 1567, 1634, 1698, 1759, 1817, 1870, 1919, 1962, | |
28 2001, 2032, 2057, 2075, 2085, 2087, 2080, 2063, | |
29 2037, 2000, 1952, 1893, 1822, 1739, 1644, 1535, | |
30 1414, 1280, 1131, 970, 794, 605, 402, 185, | |
31 -45, -288, -545, -814, -1095, -1388, -1692, -2006, | |
32 -2330, -2663, -3004, -3351, -3705, -4063, -4425, -4788, | |
33 -5153, -5517, -5879, -6237, -6589, -6935, -7271, -7597, | |
34 -7910, -8209, -8491, -8755, -8998, -9219, -9416, -9585, | |
35 -9727, -9838, -9916, -9959, -9966, -9935, -9863, -9750, | |
36 -9592, -9389, -9139, -8840, -8492, -8092, -7640, -7134, | |
37 -6574, -5959, -5288, -4561, -3776, -2935, -2037, -1082, | |
38 -70, 998, 2122, 3300, 4533, 5818, 7154, 8540, | |
39 9975, 11455, 12980, 14548, 16155, 17799, 19478, 21189, | |
40 22929, 24694, 26482, 28289, 30112, 31947,-26209,-24360, | |
41 -22511,-20664,-18824,-16994,-15179,-13383,-11610, -9863, | |
42 -8147, -6466, -4822, -3222, -1667, -162, 1289, 2684, | |
43 4019, 5290, 6494, 7629, 8692, 9679, 10590, 11420, | |
44 12169, 12835, 13415, 13908, 14313, 14630, 14856, 14992, | |
45 15038 | |
46 }; | |
47 | |
48 static long intwindiv = 0x47800000; | |
49 | |
50 void make_decode_tables_MMX(long scaleval) | |
51 { | |
4141 | 52 long intwinbase_step; |
53 intwinbase_step=2; | |
4140 | 54 scaleval =- scaleval; |
55 __asm __volatile( | |
56 "xorl %%ecx,%%ecx\n\t" | |
57 "xorl %%ebx,%%ebx\n\t" | |
58 "movl $32,%%esi\n\t" | |
59 "movl %0,%%edi\n\t" | |
60 ".L00:\n\t" | |
61 "cmpl $528,%%ecx\n\t" | |
62 "jnc .L02\n\t" | |
63 "movswl (%%edi),%%eax\n\t" | |
64 "cmpl %0+444,%%edi\n\t" | |
65 "jc .L01\n\t" | |
66 "addl $60000,%%eax\n\t" | |
67 ".L01:\n\t" | |
68 "pushl %%eax\n\t" | |
69 "fildl (%%esp)\n\t" | |
4246
3f677202418b
mangling in mp3lib + stdcall undefined fix with cygwin
atmos4
parents:
4141
diff
changeset
|
70 "fdivs "MANGLE(intwindiv)"\n\t" |
4140 | 71 "popl %%eax\n\t" |
72 "fimull %2\n\t" | |
73 "fsts %1(,%%ecx,4)\n\t" | |
74 "fstps %1+64(,%%ecx,4)\n\t" | |
75 ".L02:\n\t" | |
76 "leal -1(%%esi),%%edx\n\t" | |
77 "and %%ebx,%%edx\n\t" | |
78 "cmp $31,%%edx\n\t" | |
79 "jnz .L03\n\t" | |
80 "addl $-1023,%%ecx\n\t" | |
81 "test %%esi,%%ebx\n\t" | |
82 "jz .L03\n\t" | |
83 "negl %2\n\t" | |
84 ".L03:\n\t" | |
85 "addl %%esi,%%ecx\n\t" | |
86 "addl %3,%%edi\n\t" | |
87 "incl %%ebx\n\t" | |
88 "cmpl %0,%%edi\n\t" | |
89 "jz .L04\n\t" | |
90 "cmp $256,%%ebx\n\t" | |
91 "jnz .L00\n\t" | |
92 "negl %3\n\t" | |
93 "jmp .L00\n\t" | |
94 ".L04:\n\t" | |
95 ::"g"(intwinbase_MMX),"m"(decwin[0]),"m"(scaleval),"m"(intwinbase_step) | |
96 :"memory","%ebx","%esi","%edi"); | |
4141 | 97 intwinbase_step=2; |
4140 | 98 __asm __volatile( |
99 "xorl %%ecx,%%ecx\n\t" | |
100 "xorl %%ebx,%%ebx\n\t" | |
101 ".L05:\n\t" | |
102 "cmpl $528,%%ecx\n\t" | |
103 "jnc .L11\n\t" | |
104 "movswl (%%edi),%%eax\n\t" | |
105 "cmpl %0+444,%%edi\n\t" | |
106 "jc .L06\n\t" | |
107 "addl $60000,%%eax\n\t" | |
108 ".L06:\n\t" | |
109 "cltd\n\t" | |
110 "imull %2\n\t" | |
111 "shrdl $17,%%edx,%%eax\n\t" | |
112 "cmpl $32767,%%eax\n\t" | |
113 "movl $1055,%%edx\n\t" | |
114 "jle .L07\n\t" | |
115 "movl $32767,%%eax\n\t" | |
116 "jmp .L08\n\t" | |
117 ".L07:\n\t" | |
118 "cmpl $-32767,%%eax\n\t" | |
119 "jge .L08\n\t" | |
120 "movl $-32767,%%eax\n\t" | |
121 ".L08:\n\t" | |
122 "cmpl $512,%%ecx\n\t" | |
123 "jnc .L09\n\t" | |
124 "subl %%ecx,%%edx\n\t" | |
125 "movw %%ax,%1(,%%edx,2)\n\t" | |
126 "movw %%ax,%1-32(,%%edx,2)\n\t" | |
127 ".L09:\n\t" | |
128 "testl $1,%%ecx\n\t" | |
129 "jnz .L10\n\t" | |
130 "negl %%eax\n\t" | |
131 ".L10:\n\t" | |
132 "movw %%ax,%1(,%%ecx,2)\n\t" | |
133 "movw %%ax,%1+32(,%%ecx,2)\n\t" | |
134 ".L11:\n\t" | |
135 "leal -1(%%esi),%%edx\n\t" | |
136 "and %%ebx,%%edx\n\t" | |
137 "cmp $31,%%edx\n\t" | |
138 "jnz .L12\n\t" | |
139 "addl $-1023,%%ecx\n\t" | |
140 "test %%esi,%%ebx\n\t" | |
141 "jz .L12\n\t" | |
142 "negl %2\n\t" | |
143 ".L12:\n\t" | |
144 "addl %%esi,%%ecx\n\t" | |
145 "addl %3,%%edi\n\t" | |
146 "incl %%ebx\n\t" | |
147 "cmpl %0,%%edi\n\t" | |
148 "jz .L13\n\t" | |
149 "cmp $256,%%ebx\n\t" | |
150 "jnz .L05\n\t" | |
151 "negl %3\n\t" | |
152 "jmp .L05\n\t" | |
153 ".L13:\n\t" | |
154 ::"g"(intwinbase_MMX),"m"(decwins[0]),"m"(scaleval),"m"(intwinbase_step) | |
155 :"memory","%ebx","%esi","%edi"); | |
156 } |