Mercurial > libavcodec.hg
comparison faandct.c @ 1589:eb26d190cf5a libavcodec
move identical code into its own function
intXY_t -> int_fastXY_t
author | michael |
---|---|
date | Thu, 30 Oct 2003 22:51:02 +0000 |
parents | aa4dc16c0f18 |
children | f65d87bfdd5a |
comparison
equal
deleted
inserted
replaced
1588:de5e2acd0f80 | 1589:eb26d190cf5a |
---|---|
68 B5*B0, B5*B1, B5*B2, B5*B3, B5*B4, B5*B5, B5*B6, B5*B7, | 68 B5*B0, B5*B1, B5*B2, B5*B3, B5*B4, B5*B5, B5*B6, B5*B7, |
69 B6*B0, B6*B1, B6*B2, B6*B3, B6*B4, B6*B5, B6*B6, B6*B7, | 69 B6*B0, B6*B1, B6*B2, B6*B3, B6*B4, B6*B5, B6*B6, B6*B7, |
70 B7*B0, B7*B1, B7*B2, B7*B3, B7*B4, B7*B5, B7*B6, B7*B7, | 70 B7*B0, B7*B1, B7*B2, B7*B3, B7*B4, B7*B5, B7*B6, B7*B7, |
71 }; | 71 }; |
72 | 72 |
73 void ff_faandct(DCTELEM * data) | 73 static always_inline void row_fdct(FLOAT temp[64], DCTELEM * data) |
74 { | 74 { |
75 FLOAT tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7; | 75 FLOAT tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7; |
76 FLOAT tmp10, tmp11, tmp12, tmp13; | 76 FLOAT tmp10, tmp11, tmp12, tmp13; |
77 FLOAT z1, z2, z3, z4, z5, z11, z13; | 77 FLOAT z1, z2, z3, z4, z5, z11, z13; |
78 FLOAT temp[64]; | |
79 int i; | 78 int i; |
80 | |
81 emms_c(); | |
82 | 79 |
83 for (i=0; i<8*8; i+=8) { | 80 for (i=0; i<8*8; i+=8) { |
84 tmp0= data[0 + i] + data[7 + i]; | 81 tmp0= data[0 + i] + data[7 + i]; |
85 tmp7= data[0 + i] - data[7 + i]; | 82 tmp7= data[0 + i] - data[7 + i]; |
86 tmp1= data[1 + i] + data[6 + i]; | 83 tmp1= data[1 + i] + data[6 + i]; |
116 | 113 |
117 temp[5 + i]= z13 + z2; | 114 temp[5 + i]= z13 + z2; |
118 temp[3 + i]= z13 - z2; | 115 temp[3 + i]= z13 - z2; |
119 temp[1 + i]= z11 + z4; | 116 temp[1 + i]= z11 + z4; |
120 temp[7 + i]= z11 - z4; | 117 temp[7 + i]= z11 - z4; |
121 } | 118 } |
119 } | |
120 | |
121 void ff_faandct(DCTELEM * data) | |
122 { | |
123 FLOAT tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7; | |
124 FLOAT tmp10, tmp11, tmp12, tmp13; | |
125 FLOAT z1, z2, z3, z4, z5, z11, z13; | |
126 FLOAT temp[64]; | |
127 int i; | |
128 | |
129 emms_c(); | |
130 | |
131 row_fdct(temp, data); | |
122 | 132 |
123 for (i=0; i<8; i++) { | 133 for (i=0; i<8; i++) { |
124 tmp0= temp[8*0 + i] + temp[8*7 + i]; | 134 tmp0= temp[8*0 + i] + temp[8*7 + i]; |
125 tmp7= temp[8*0 + i] - temp[8*7 + i]; | 135 tmp7= temp[8*0 + i] - temp[8*7 + i]; |
126 tmp1= temp[8*1 + i] + temp[8*6 + i]; | 136 tmp1= temp[8*1 + i] + temp[8*6 + i]; |
163 | 173 |
164 void ff_faandct248(DCTELEM * data) | 174 void ff_faandct248(DCTELEM * data) |
165 { | 175 { |
166 FLOAT tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7; | 176 FLOAT tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7; |
167 FLOAT tmp10, tmp11, tmp12, tmp13; | 177 FLOAT tmp10, tmp11, tmp12, tmp13; |
168 FLOAT z1, z2, z3, z4, z5, z11, z13; | 178 FLOAT z1; |
169 FLOAT temp[64]; | 179 FLOAT temp[64]; |
170 int i; | 180 int i; |
171 | 181 |
172 emms_c(); | 182 emms_c(); |
173 | 183 |
174 for (i=0; i<8*8; i+=8) { | 184 row_fdct(temp, data); |
175 tmp0= data[0 + i] + data[7 + i]; | |
176 tmp7= data[0 + i] - data[7 + i]; | |
177 tmp1= data[1 + i] + data[6 + i]; | |
178 tmp6= data[1 + i] - data[6 + i]; | |
179 tmp2= data[2 + i] + data[5 + i]; | |
180 tmp5= data[2 + i] - data[5 + i]; | |
181 tmp3= data[3 + i] + data[4 + i]; | |
182 tmp4= data[3 + i] - data[4 + i]; | |
183 | |
184 tmp10= tmp0 + tmp3; | |
185 tmp13= tmp0 - tmp3; | |
186 tmp11= tmp1 + tmp2; | |
187 tmp12= tmp1 - tmp2; | |
188 | |
189 temp[0 + i]= tmp10 + tmp11; | |
190 temp[4 + i]= tmp10 - tmp11; | |
191 | |
192 z1= (tmp12 + tmp13)*A1; | |
193 temp[2 + i]= tmp13 + z1; | |
194 temp[6 + i]= tmp13 - z1; | |
195 | |
196 tmp10= tmp4 + tmp5; | |
197 tmp11= tmp5 + tmp6; | |
198 tmp12= tmp6 + tmp7; | |
199 | |
200 z5= (tmp10 - tmp12) * A5; | |
201 z2= tmp10*A2 + z5; | |
202 z4= tmp12*A4 + z5; | |
203 z3= tmp11*A1; | |
204 | |
205 z11= tmp7 + z3; | |
206 z13= tmp7 - z3; | |
207 | |
208 temp[5 + i]= z13 + z2; | |
209 temp[3 + i]= z13 - z2; | |
210 temp[1 + i]= z11 + z4; | |
211 temp[7 + i]= z11 - z4; | |
212 } | |
213 | 185 |
214 for (i=0; i<8; i++) { | 186 for (i=0; i<8; i++) { |
215 tmp0 = temp[8*0 + i] + temp[8*1 + i]; | 187 tmp0 = temp[8*0 + i] + temp[8*1 + i]; |
216 tmp1 = temp[8*2 + i] + temp[8*3 + i]; | 188 tmp1 = temp[8*2 + i] + temp[8*3 + i]; |
217 tmp2 = temp[8*4 + i] + temp[8*5 + i]; | 189 tmp2 = temp[8*4 + i] + temp[8*5 + i]; |