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];