Mercurial > libavcodec.hg
annotate ps2/mmi.h @ 6560:ad2cf074632a libavcodec
Do not use the mlib IDCT by default. We do not want videos which are only
decodable with the mlib IDCT. If anyone knows of other IDCTs which are not
binary identical to a widely available one, ensure that they are not used
by default. Such IDCTs should never have been default anyway, but possibly
something slipped through the reviews ...
author | michael |
---|---|
date | Wed, 02 Apr 2008 11:47:00 +0000 |
parents | 1d83e9c34641 |
children | 43c97362dfa8 |
rev | line source |
---|---|
3699
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2979
diff
changeset
|
1 /* |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2979
diff
changeset
|
2 * copyright (c) 2002 Leon van Stuivenberg |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2979
diff
changeset
|
3 * |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3699
diff
changeset
|
4 * This file is part of FFmpeg. |
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3699
diff
changeset
|
5 * |
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3699
diff
changeset
|
6 * FFmpeg is free software; you can redistribute it and/or |
3699
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2979
diff
changeset
|
7 * modify it under the terms of the GNU Lesser General Public |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2979
diff
changeset
|
8 * License as published by the Free Software Foundation; either |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3699
diff
changeset
|
9 * version 2.1 of the License, or (at your option) any later version. |
3699
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2979
diff
changeset
|
10 * |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3699
diff
changeset
|
11 * FFmpeg is distributed in the hope that it will be useful, |
3699
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2979
diff
changeset
|
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2979
diff
changeset
|
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2979
diff
changeset
|
14 * Lesser General Public License for more details. |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2979
diff
changeset
|
15 * |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2979
diff
changeset
|
16 * You should have received a copy of the GNU Lesser General Public |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3699
diff
changeset
|
17 * License along with FFmpeg; if not, write to the Free Software |
3699
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2979
diff
changeset
|
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2979
diff
changeset
|
19 */ |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2979
diff
changeset
|
20 |
5830
1d83e9c34641
Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents:
5200
diff
changeset
|
21 #ifndef FFMPEG_MMI_H |
1d83e9c34641
Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents:
5200
diff
changeset
|
22 #define FFMPEG_MMI_H |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
23 |
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
24 #define align16 __attribute__ ((aligned (16))) |
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
25 |
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
26 /* |
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
27 #define r0 $zero |
2979 | 28 #define r1 $at //assembler! |
29 #define r2 $v0 //return | |
30 #define r3 $v1 //return | |
31 #define r4 $a0 //arg | |
32 #define r5 $a1 //arg | |
33 #define r6 $a2 //arg | |
34 #define r7 $a3 //arg | |
35 #define r8 $t0 //temp | |
36 #define r9 $t1 //temp | |
37 #define r10 $t2 //temp | |
38 #define r11 $t3 //temp | |
39 #define r12 $t4 //temp | |
40 #define r13 $t5 //temp | |
41 #define r14 $t6 //temp | |
42 #define r15 $t7 //temp | |
43 #define r16 $s0 //saved temp | |
44 #define r17 $s1 //saved temp | |
45 #define r18 $s2 //saved temp | |
46 #define r19 $s3 //saved temp | |
47 #define r20 $s4 //saved temp | |
48 #define r21 $s5 //saved temp | |
49 #define r22 $s6 //saved temp | |
50 #define r23 $s7 //saved temp | |
51 #define r24 $t8 //temp | |
52 #define r25 $t9 //temp | |
53 #define r26 $k0 //kernel | |
54 #define r27 $k1 //kernel | |
55 #define r28 $gp //global ptr | |
56 #define r29 $sp //stack ptr | |
57 #define r30 $fp //frame ptr | |
58 #define r31 $ra //return addr | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
59 */ |
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
60 |
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
61 |
2979 | 62 #define lq(base, off, reg) \ |
63 __asm__ __volatile__ ("lq " #reg ", %0("#base ")" : : "i" (off) ) | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
64 |
2979 | 65 #define lq2(mem, reg) \ |
66 __asm__ __volatile__ ("lq " #reg ", %0" : : "r" (mem)) | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
67 |
2979 | 68 #define sq(reg, off, base) \ |
69 __asm__ __volatile__ ("sq " #reg ", %0("#base ")" : : "i" (off) ) | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
70 |
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
71 /* |
2979 | 72 #define ld(base, off, reg) \ |
73 __asm__ __volatile__ ("ld " #reg ", " #off "("#base ")") | |
721
71f669e9f633
ps2 optimizations update patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
689
diff
changeset
|
74 */ |
71f669e9f633
ps2 optimizations update patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
689
diff
changeset
|
75 |
2979 | 76 #define ld3(base, off, reg) \ |
77 __asm__ __volatile__ (".word %0" : : "i" ( 0xdc000000 | (base<<21) | (reg<<16) | (off))) | |
721
71f669e9f633
ps2 optimizations update patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
689
diff
changeset
|
78 |
2979 | 79 #define ldr3(base, off, reg) \ |
80 __asm__ __volatile__ (".word %0" : : "i" ( 0x6c000000 | (base<<21) | (reg<<16) | (off))) | |
721
71f669e9f633
ps2 optimizations update patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
689
diff
changeset
|
81 |
2979 | 82 #define ldl3(base, off, reg) \ |
83 __asm__ __volatile__ (".word %0" : : "i" ( 0x68000000 | (base<<21) | (reg<<16) | (off))) | |
721
71f669e9f633
ps2 optimizations update patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
689
diff
changeset
|
84 |
71f669e9f633
ps2 optimizations update patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
689
diff
changeset
|
85 /* |
2979 | 86 #define sd(reg, off, base) \ |
87 __asm__ __volatile__ ("sd " #reg ", " #off "("#base ")") | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
88 */ |
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
89 //seems assembler has bug encoding mnemonic 'sd', so DIY |
2979 | 90 #define sd3(reg, off, base) \ |
91 __asm__ __volatile__ (".word %0" : : "i" ( 0xfc000000 | (base<<21) | (reg<<16) | (off))) | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
92 |
2979 | 93 #define sw(reg, off, base) \ |
94 __asm__ __volatile__ ("sw " #reg ", " #off "("#base ")") | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
95 |
2979 | 96 #define sq2(reg, mem) \ |
97 __asm__ __volatile__ ("sq " #reg ", %0" : : "m" (*(mem))) | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
98 |
2979 | 99 #define pinth(rs, rt, rd) \ |
100 __asm__ __volatile__ ("pinth " #rd ", " #rs ", " #rt ) | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
101 |
2979 | 102 #define phmadh(rs, rt, rd) \ |
103 __asm__ __volatile__ ("phmadh " #rd ", " #rs ", " #rt ) | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
104 |
2979 | 105 #define pcpyud(rs, rt, rd) \ |
106 __asm__ __volatile__ ("pcpyud " #rd ", " #rs ", " #rt ) | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
107 |
2979 | 108 #define pcpyld(rs, rt, rd) \ |
109 __asm__ __volatile__ ("pcpyld " #rd ", " #rs ", " #rt ) | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
110 |
2979 | 111 #define pcpyh(rt, rd) \ |
112 __asm__ __volatile__ ("pcpyh " #rd ", " #rt ) | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
113 |
2979 | 114 #define paddw(rs, rt, rd) \ |
115 __asm__ __volatile__ ("paddw " #rd ", " #rs ", " #rt ) | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
116 |
2979 | 117 #define pextlw(rs, rt, rd) \ |
118 __asm__ __volatile__ ("pextlw " #rd ", " #rs ", " #rt ) | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
119 |
2979 | 120 #define pextuw(rs, rt, rd) \ |
121 __asm__ __volatile__ ("pextuw " #rd ", " #rs ", " #rt ) | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
122 |
2979 | 123 #define pextlh(rs, rt, rd) \ |
124 __asm__ __volatile__ ("pextlh " #rd ", " #rs ", " #rt ) | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
125 |
2979 | 126 #define pextuh(rs, rt, rd) \ |
127 __asm__ __volatile__ ("pextuh " #rd ", " #rs ", " #rt ) | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
128 |
2979 | 129 #define psubw(rs, rt, rd) \ |
130 __asm__ __volatile__ ("psubw " #rd ", " #rs ", " #rt ) | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
131 |
2979 | 132 #define psraw(rt, sa, rd) \ |
133 __asm__ __volatile__ ("psraw " #rd ", " #rt ", %0" : : "i"(sa) ) | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
134 |
2979 | 135 #define ppach(rs, rt, rd) \ |
136 __asm__ __volatile__ ("ppach " #rd ", " #rs ", " #rt ) | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
137 |
2979 | 138 #define ppacb(rs, rt, rd) \ |
139 __asm__ __volatile__ ("ppacb " #rd ", " #rs ", " #rt ) | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
140 |
2979 | 141 #define prevh(rt, rd) \ |
142 __asm__ __volatile__ ("prevh " #rd ", " #rt ) | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
143 |
2979 | 144 #define pmulth(rs, rt, rd) \ |
145 __asm__ __volatile__ ("pmulth " #rd ", " #rs ", " #rt ) | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
146 |
2979 | 147 #define pmaxh(rs, rt, rd) \ |
148 __asm__ __volatile__ ("pmaxh " #rd ", " #rs ", " #rt ) | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
149 |
2979 | 150 #define pminh(rs, rt, rd) \ |
151 __asm__ __volatile__ ("pminh " #rd ", " #rs ", " #rt ) | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
152 |
2979 | 153 #define pinteh(rs, rt, rd) \ |
154 __asm__ __volatile__ ("pinteh " #rd ", " #rs ", " #rt ) | |
721
71f669e9f633
ps2 optimizations update patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
689
diff
changeset
|
155 |
2979 | 156 #define paddh(rs, rt, rd) \ |
157 __asm__ __volatile__ ("paddh " #rd ", " #rs ", " #rt ) | |
721
71f669e9f633
ps2 optimizations update patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
689
diff
changeset
|
158 |
2979 | 159 #define psubh(rs, rt, rd) \ |
160 __asm__ __volatile__ ("psubh " #rd ", " #rs ", " #rt ) | |
721
71f669e9f633
ps2 optimizations update patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
689
diff
changeset
|
161 |
2979 | 162 #define psrah(rt, sa, rd) \ |
163 __asm__ __volatile__ ("psrah " #rd ", " #rt ", %0" : : "i"(sa) ) | |
721
71f669e9f633
ps2 optimizations update patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
689
diff
changeset
|
164 |
2979 | 165 #define pmfhl_uw(rd) \ |
166 __asm__ __volatile__ ("pmfhl.uw " #rd) | |
721
71f669e9f633
ps2 optimizations update patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
689
diff
changeset
|
167 |
2979 | 168 #define pextlb(rs, rt, rd) \ |
169 __asm__ __volatile__ ("pextlb " #rd ", " #rs ", " #rt ) | |
689
efcbfbd18864
ps2 idct patch by (Leon van Stuivenberg <leonvs at iae dot nl>)
michaelni
parents:
diff
changeset
|
170 |
5830
1d83e9c34641
Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents:
5200
diff
changeset
|
171 #endif /* FFMPEG_MMI_H */ |