comparison simple_idct.c @ 2979:bfabfdf9ce55 libavcodec

COSMETICS: tabs --> spaces, some prettyprinting
author diego
date Thu, 22 Dec 2005 01:10:11 +0000
parents ef2149182f1c
children 0b546eab515d
comparison
equal deleted inserted replaced
2978:403183bbb505 2979:bfabfdf9ce55
73 73
74 #endif 74 #endif
75 75
76 static inline void idctRowCondDC (DCTELEM * row) 76 static inline void idctRowCondDC (DCTELEM * row)
77 { 77 {
78 int a0, a1, a2, a3, b0, b1, b2, b3; 78 int a0, a1, a2, a3, b0, b1, b2, b3;
79 #ifdef FAST_64BIT 79 #ifdef FAST_64BIT
80 uint64_t temp; 80 uint64_t temp;
81 #else 81 #else
82 uint32_t temp; 82 uint32_t temp;
83 #endif 83 #endif
95 temp += temp << 16; 95 temp += temp << 16;
96 temp += temp << 32; 96 temp += temp << 32;
97 ((uint64_t *)row)[0] = temp; 97 ((uint64_t *)row)[0] = temp;
98 ((uint64_t *)row)[1] = temp; 98 ((uint64_t *)row)[1] = temp;
99 return; 99 return;
100 } 100 }
101 }else{ 101 }else{
102 if (!(row[1]|row[2]|row[3]|row[4]|row[5]|row[6]|row[7])) { 102 if (!(row[1]|row[2]|row[3]|row[4]|row[5]|row[6]|row[7])) {
103 row[0]=row[1]=row[2]=row[3]=row[4]=row[5]=row[6]=row[7]= row[0] << 3; 103 row[0]=row[1]=row[2]=row[3]=row[4]=row[5]=row[6]=row[7]= row[0] << 3;
104 return; 104 return;
105 } 105 }
123 } 123 }
124 } 124 }
125 #endif 125 #endif
126 126
127 a0 = (W4 * row[0]) + (1 << (ROW_SHIFT - 1)); 127 a0 = (W4 * row[0]) + (1 << (ROW_SHIFT - 1));
128 a1 = a0; 128 a1 = a0;
129 a2 = a0; 129 a2 = a0;
130 a3 = a0; 130 a3 = a0;
131 131
132 /* no need to optimize : gcc does it */ 132 /* no need to optimize : gcc does it */
133 a0 += W2 * row[2]; 133 a0 += W2 * row[2];
134 a1 += W6 * row[2]; 134 a1 += W6 * row[2];
135 a2 -= W6 * row[2]; 135 a2 -= W6 * row[2];
147 #ifdef FAST_64BIT 147 #ifdef FAST_64BIT
148 temp = ((uint64_t*)row)[1]; 148 temp = ((uint64_t*)row)[1];
149 #else 149 #else
150 temp = ((uint32_t*)row)[2] | ((uint32_t*)row)[3]; 150 temp = ((uint32_t*)row)[2] | ((uint32_t*)row)[3];
151 #endif 151 #endif
152 if (temp != 0) { 152 if (temp != 0) {
153 a0 += W4*row[4] + W6*row[6]; 153 a0 += W4*row[4] + W6*row[6];
154 a1 += - W4*row[4] - W2*row[6]; 154 a1 += - W4*row[4] - W2*row[6];
155 a2 += - W4*row[4] + W2*row[6]; 155 a2 += - W4*row[4] + W2*row[6];
156 a3 += W4*row[4] - W6*row[6]; 156 a3 += W4*row[4] - W6*row[6];
157 157
164 MAC16(b2, W7, row[5]); 164 MAC16(b2, W7, row[5]);
165 MAC16(b2, W3, row[7]); 165 MAC16(b2, W3, row[7]);
166 166
167 MAC16(b3, W3, row[5]); 167 MAC16(b3, W3, row[5]);
168 MAC16(b3, -W1, row[7]); 168 MAC16(b3, -W1, row[7]);
169 } 169 }
170 170
171 row[0] = (a0 + b0) >> ROW_SHIFT; 171 row[0] = (a0 + b0) >> ROW_SHIFT;
172 row[7] = (a0 - b0) >> ROW_SHIFT; 172 row[7] = (a0 - b0) >> ROW_SHIFT;
173 row[1] = (a1 + b1) >> ROW_SHIFT; 173 row[1] = (a1 + b1) >> ROW_SHIFT;
174 row[6] = (a1 - b1) >> ROW_SHIFT; 174 row[6] = (a1 - b1) >> ROW_SHIFT;
175 row[2] = (a2 + b2) >> ROW_SHIFT; 175 row[2] = (a2 + b2) >> ROW_SHIFT;
176 row[5] = (a2 - b2) >> ROW_SHIFT; 176 row[5] = (a2 - b2) >> ROW_SHIFT;
177 row[3] = (a3 + b3) >> ROW_SHIFT; 177 row[3] = (a3 + b3) >> ROW_SHIFT;
178 row[4] = (a3 - b3) >> ROW_SHIFT; 178 row[4] = (a3 - b3) >> ROW_SHIFT;
179 } 179 }
180 180
181 static inline void idctSparseColPut (uint8_t *dest, int line_size, 181 static inline void idctSparseColPut (uint8_t *dest, int line_size,
182 DCTELEM * col) 182 DCTELEM * col)
183 { 183 {
184 int a0, a1, a2, a3, b0, b1, b2, b3; 184 int a0, a1, a2, a3, b0, b1, b2, b3;
185 uint8_t *cm = cropTbl + MAX_NEG_CROP; 185 uint8_t *cm = cropTbl + MAX_NEG_CROP;
186 186
187 /* XXX: I did that only to give same values as previous code */ 187 /* XXX: I did that only to give same values as previous code */
188 a0 = W4 * (col[8*0] + ((1<<(COL_SHIFT-1))/W4)); 188 a0 = W4 * (col[8*0] + ((1<<(COL_SHIFT-1))/W4));
189 a1 = a0; 189 a1 = a0;
190 a2 = a0; 190 a2 = a0;
191 a3 = a0; 191 a3 = a0;
192 192
193 a0 += + W2*col[8*2]; 193 a0 += + W2*col[8*2];
194 a1 += + W6*col[8*2]; 194 a1 += + W6*col[8*2];
195 a2 += - W6*col[8*2]; 195 a2 += - W6*col[8*2];
196 a3 += - W2*col[8*2]; 196 a3 += - W2*col[8*2];
203 MAC16(b0, + W3, col[8*3]); 203 MAC16(b0, + W3, col[8*3]);
204 MAC16(b1, - W7, col[8*3]); 204 MAC16(b1, - W7, col[8*3]);
205 MAC16(b2, - W1, col[8*3]); 205 MAC16(b2, - W1, col[8*3]);
206 MAC16(b3, - W5, col[8*3]); 206 MAC16(b3, - W5, col[8*3]);
207 207
208 if(col[8*4]){ 208 if(col[8*4]){
209 a0 += + W4*col[8*4]; 209 a0 += + W4*col[8*4];
210 a1 += - W4*col[8*4]; 210 a1 += - W4*col[8*4];
211 a2 += - W4*col[8*4]; 211 a2 += - W4*col[8*4];
212 a3 += + W4*col[8*4]; 212 a3 += + W4*col[8*4];
213 } 213 }
214 214
215 if (col[8*5]) { 215 if (col[8*5]) {
216 MAC16(b0, + W5, col[8*5]); 216 MAC16(b0, + W5, col[8*5]);
217 MAC16(b1, - W1, col[8*5]); 217 MAC16(b1, - W1, col[8*5]);
218 MAC16(b2, + W7, col[8*5]); 218 MAC16(b2, + W7, col[8*5]);
219 MAC16(b3, + W3, col[8*5]); 219 MAC16(b3, + W3, col[8*5]);
220 } 220 }
221 221
222 if(col[8*6]){ 222 if(col[8*6]){
223 a0 += + W6*col[8*6]; 223 a0 += + W6*col[8*6];
224 a1 += - W2*col[8*6]; 224 a1 += - W2*col[8*6];
225 a2 += + W2*col[8*6]; 225 a2 += + W2*col[8*6];
226 a3 += - W6*col[8*6]; 226 a3 += - W6*col[8*6];
227 } 227 }
228 228
229 if (col[8*7]) { 229 if (col[8*7]) {
230 MAC16(b0, + W7, col[8*7]); 230 MAC16(b0, + W7, col[8*7]);
231 MAC16(b1, - W5, col[8*7]); 231 MAC16(b1, - W5, col[8*7]);
232 MAC16(b2, + W3, col[8*7]); 232 MAC16(b2, + W3, col[8*7]);
233 MAC16(b3, - W1, col[8*7]); 233 MAC16(b3, - W1, col[8*7]);
234 } 234 }
235 235
236 dest[0] = cm[(a0 + b0) >> COL_SHIFT]; 236 dest[0] = cm[(a0 + b0) >> COL_SHIFT];
237 dest += line_size; 237 dest += line_size;
238 dest[0] = cm[(a1 + b1) >> COL_SHIFT]; 238 dest[0] = cm[(a1 + b1) >> COL_SHIFT];
239 dest += line_size; 239 dest += line_size;
251 } 251 }
252 252
253 static inline void idctSparseColAdd (uint8_t *dest, int line_size, 253 static inline void idctSparseColAdd (uint8_t *dest, int line_size,
254 DCTELEM * col) 254 DCTELEM * col)
255 { 255 {
256 int a0, a1, a2, a3, b0, b1, b2, b3; 256 int a0, a1, a2, a3, b0, b1, b2, b3;
257 uint8_t *cm = cropTbl + MAX_NEG_CROP; 257 uint8_t *cm = cropTbl + MAX_NEG_CROP;
258 258
259 /* XXX: I did that only to give same values as previous code */ 259 /* XXX: I did that only to give same values as previous code */
260 a0 = W4 * (col[8*0] + ((1<<(COL_SHIFT-1))/W4)); 260 a0 = W4 * (col[8*0] + ((1<<(COL_SHIFT-1))/W4));
261 a1 = a0; 261 a1 = a0;
262 a2 = a0; 262 a2 = a0;
263 a3 = a0; 263 a3 = a0;
264 264
265 a0 += + W2*col[8*2]; 265 a0 += + W2*col[8*2];
266 a1 += + W6*col[8*2]; 266 a1 += + W6*col[8*2];
267 a2 += - W6*col[8*2]; 267 a2 += - W6*col[8*2];
268 a3 += - W2*col[8*2]; 268 a3 += - W2*col[8*2];
275 MAC16(b0, + W3, col[8*3]); 275 MAC16(b0, + W3, col[8*3]);
276 MAC16(b1, - W7, col[8*3]); 276 MAC16(b1, - W7, col[8*3]);
277 MAC16(b2, - W1, col[8*3]); 277 MAC16(b2, - W1, col[8*3]);
278 MAC16(b3, - W5, col[8*3]); 278 MAC16(b3, - W5, col[8*3]);
279 279
280 if(col[8*4]){ 280 if(col[8*4]){
281 a0 += + W4*col[8*4]; 281 a0 += + W4*col[8*4];
282 a1 += - W4*col[8*4]; 282 a1 += - W4*col[8*4];
283 a2 += - W4*col[8*4]; 283 a2 += - W4*col[8*4];
284 a3 += + W4*col[8*4]; 284 a3 += + W4*col[8*4];
285 } 285 }
286 286
287 if (col[8*5]) { 287 if (col[8*5]) {
288 MAC16(b0, + W5, col[8*5]); 288 MAC16(b0, + W5, col[8*5]);
289 MAC16(b1, - W1, col[8*5]); 289 MAC16(b1, - W1, col[8*5]);
290 MAC16(b2, + W7, col[8*5]); 290 MAC16(b2, + W7, col[8*5]);
291 MAC16(b3, + W3, col[8*5]); 291 MAC16(b3, + W3, col[8*5]);
292 } 292 }
293 293
294 if(col[8*6]){ 294 if(col[8*6]){
295 a0 += + W6*col[8*6]; 295 a0 += + W6*col[8*6];
296 a1 += - W2*col[8*6]; 296 a1 += - W2*col[8*6];
297 a2 += + W2*col[8*6]; 297 a2 += + W2*col[8*6];
298 a3 += - W6*col[8*6]; 298 a3 += - W6*col[8*6];
299 } 299 }
300 300
301 if (col[8*7]) { 301 if (col[8*7]) {
302 MAC16(b0, + W7, col[8*7]); 302 MAC16(b0, + W7, col[8*7]);
303 MAC16(b1, - W5, col[8*7]); 303 MAC16(b1, - W5, col[8*7]);
304 MAC16(b2, + W3, col[8*7]); 304 MAC16(b2, + W3, col[8*7]);
305 MAC16(b3, - W1, col[8*7]); 305 MAC16(b3, - W1, col[8*7]);
306 } 306 }
307 307
308 dest[0] = cm[dest[0] + ((a0 + b0) >> COL_SHIFT)]; 308 dest[0] = cm[dest[0] + ((a0 + b0) >> COL_SHIFT)];
309 dest += line_size; 309 dest += line_size;
310 dest[0] = cm[dest[0] + ((a1 + b1) >> COL_SHIFT)]; 310 dest[0] = cm[dest[0] + ((a1 + b1) >> COL_SHIFT)];
311 dest += line_size; 311 dest += line_size;
322 dest[0] = cm[dest[0] + ((a0 - b0) >> COL_SHIFT)]; 322 dest[0] = cm[dest[0] + ((a0 - b0) >> COL_SHIFT)];
323 } 323 }
324 324
325 static inline void idctSparseCol (DCTELEM * col) 325 static inline void idctSparseCol (DCTELEM * col)
326 { 326 {
327 int a0, a1, a2, a3, b0, b1, b2, b3; 327 int a0, a1, a2, a3, b0, b1, b2, b3;
328 328
329 /* XXX: I did that only to give same values as previous code */ 329 /* XXX: I did that only to give same values as previous code */
330 a0 = W4 * (col[8*0] + ((1<<(COL_SHIFT-1))/W4)); 330 a0 = W4 * (col[8*0] + ((1<<(COL_SHIFT-1))/W4));
331 a1 = a0; 331 a1 = a0;
332 a2 = a0; 332 a2 = a0;
333 a3 = a0; 333 a3 = a0;
334 334
335 a0 += + W2*col[8*2]; 335 a0 += + W2*col[8*2];
336 a1 += + W6*col[8*2]; 336 a1 += + W6*col[8*2];
337 a2 += - W6*col[8*2]; 337 a2 += - W6*col[8*2];
338 a3 += - W2*col[8*2]; 338 a3 += - W2*col[8*2];
345 MAC16(b0, + W3, col[8*3]); 345 MAC16(b0, + W3, col[8*3]);
346 MAC16(b1, - W7, col[8*3]); 346 MAC16(b1, - W7, col[8*3]);
347 MAC16(b2, - W1, col[8*3]); 347 MAC16(b2, - W1, col[8*3]);
348 MAC16(b3, - W5, col[8*3]); 348 MAC16(b3, - W5, col[8*3]);
349 349
350 if(col[8*4]){ 350 if(col[8*4]){
351 a0 += + W4*col[8*4]; 351 a0 += + W4*col[8*4];
352 a1 += - W4*col[8*4]; 352 a1 += - W4*col[8*4];
353 a2 += - W4*col[8*4]; 353 a2 += - W4*col[8*4];
354 a3 += + W4*col[8*4]; 354 a3 += + W4*col[8*4];
355 } 355 }
356 356
357 if (col[8*5]) { 357 if (col[8*5]) {
358 MAC16(b0, + W5, col[8*5]); 358 MAC16(b0, + W5, col[8*5]);
359 MAC16(b1, - W1, col[8*5]); 359 MAC16(b1, - W1, col[8*5]);
360 MAC16(b2, + W7, col[8*5]); 360 MAC16(b2, + W7, col[8*5]);
361 MAC16(b3, + W3, col[8*5]); 361 MAC16(b3, + W3, col[8*5]);
362 } 362 }
363 363
364 if(col[8*6]){ 364 if(col[8*6]){
365 a0 += + W6*col[8*6]; 365 a0 += + W6*col[8*6];
366 a1 += - W2*col[8*6]; 366 a1 += - W2*col[8*6];
367 a2 += + W2*col[8*6]; 367 a2 += + W2*col[8*6];
368 a3 += - W6*col[8*6]; 368 a3 += - W6*col[8*6];
369 } 369 }
370 370
371 if (col[8*7]) { 371 if (col[8*7]) {
372 MAC16(b0, + W7, col[8*7]); 372 MAC16(b0, + W7, col[8*7]);
373 MAC16(b1, - W5, col[8*7]); 373 MAC16(b1, - W5, col[8*7]);
374 MAC16(b2, + W3, col[8*7]); 374 MAC16(b2, + W3, col[8*7]);
375 MAC16(b3, - W1, col[8*7]); 375 MAC16(b3, - W1, col[8*7]);
376 } 376 }
377 377
378 col[0 ] = ((a0 + b0) >> COL_SHIFT); 378 col[0 ] = ((a0 + b0) >> COL_SHIFT);
379 col[8 ] = ((a1 + b1) >> COL_SHIFT); 379 col[8 ] = ((a1 + b1) >> COL_SHIFT);
380 col[16] = ((a2 + b2) >> COL_SHIFT); 380 col[16] = ((a2 + b2) >> COL_SHIFT);
381 col[24] = ((a3 + b3) >> COL_SHIFT); 381 col[24] = ((a3 + b3) >> COL_SHIFT);