[cvs] / xvidcore / src / image / interpolate8x8.h Repository:
ViewVC logotype

Diff of /xvidcore/src/image/interpolate8x8.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.5.2.6, Wed Nov 20 19:53:12 2002 UTC revision 1.5.2.8, Sun Dec 8 05:33:42 2002 UTC
# Line 155  Line 155 
155          }          }
156  }  }
157    
158    
159    static __inline void
160    interpolate16x16_switch(uint8_t * const cur,
161                                              const uint8_t * const refn,
162                                              const uint32_t x,
163                                              const uint32_t y,
164                                              const int32_t dx,
165                                              const int dy,
166                                              const uint32_t stride,
167                                              const uint32_t rounding)
168    {
169            interpolate8x8_switch(cur, refn, x,   y,   dx, dy, stride, rounding);
170            interpolate8x8_switch(cur, refn, x+8, y,   dx, dy, stride, rounding);
171            interpolate8x8_switch(cur, refn, x,   y+8, dx, dy, stride, rounding);
172            interpolate8x8_switch(cur, refn, x+8, y+8, dx, dy, stride, rounding);
173    }
174    
175    
176    static __inline void
177    interpolate32x32_switch(uint8_t * const cur,
178                                              const uint8_t * const refn,
179                                              const uint32_t x,
180                                              const uint32_t y,
181                                              const int32_t dx,
182                                              const int dy,
183                                              const uint32_t stride,
184                                              const uint32_t rounding)
185    {
186            interpolate16x16_switch(cur, refn, x,    y,    dx, dy, stride, rounding);
187            interpolate16x16_switch(cur, refn, x+16, y,    dx, dy, stride, rounding);
188            interpolate16x16_switch(cur, refn, x,    y+16, dx, dy, stride, rounding);
189            interpolate16x16_switch(cur, refn, x+16, y+16, dx, dy, stride, rounding);
190    }
191    
192    
193  static __inline uint8_t *  static __inline uint8_t *
194  interpolate8x8_switch2(uint8_t * const buffer,  interpolate8x8_switch2(uint8_t * const buffer,
195                                            const uint8_t * const refn,                                            const uint8_t * const refn,
# Line 243  Line 278 
278    
279          case 1:          case 1:
280                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
281                  interpolate8x8_avg2(dst, src, halfpel_h, stride, rounding, 9);                  interpolate8x8_avg2(dst, src, halfpel_h, stride, rounding, 8);
282                  break;                  break;
283    
284          case 2:          case 2:
# Line 252  Line 287 
287    
288          case 3:          case 3:
289                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
290                  interpolate8x8_avg2(dst, src + 1, halfpel_h, stride, rounding, 9);                  interpolate8x8_avg2(dst, src + 1, halfpel_h, stride, rounding, 8);
291                  break;                  break;
292    
293          case 4:          case 4:
294                  interpolate8x8_lowpass_v(halfpel_v, src, stride, rounding);                  interpolate8x8_lowpass_v(halfpel_v, src, stride, rounding);
295                  interpolate8x8_avg2(dst, src, halfpel_v, stride, rounding, 9);                  interpolate8x8_avg2(dst, src, halfpel_v, stride, rounding, 8);
296                  break;                  break;
297    
298          case 5:          case 5:
299                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
300                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding, 9);                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding, 9);
301                  interpolate8x8_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);                  interpolate8x8_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
302                  interpolate8x8_avg2(dst, halfpel_v, halfpel_hv, stride, rounding, 9);                  interpolate8x8_avg2(dst, halfpel_v, halfpel_hv, stride, rounding, 8);
303                  break;                  break;
304    
305          case 6:          case 6:
306                  interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);
307                  interpolate8x8_avg2(dst, halfpel_h, halfpel_hv, stride, rounding, 9);                  interpolate8x8_avg2(dst, halfpel_h, halfpel_hv, stride, rounding, 8);
308                  break;                  break;
309    
310          case 7:          case 7:
311                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
312                  interpolate8x8_avg2(halfpel_v, src + 1, halfpel_h, stride, rounding, 9);                  interpolate8x8_avg2(halfpel_v, src + 1, halfpel_h, stride, rounding, 9);
313                  interpolate8x8_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);                  interpolate8x8_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
314                  interpolate8x8_avg2(dst, halfpel_v, halfpel_hv, stride, rounding, 9);                  interpolate8x8_avg2(dst, halfpel_v, halfpel_hv, stride, rounding, 8);
315                  break;                  break;
316    
317          case 8:          case 8:
# Line 301  Line 336 
336    
337          case 12:          case 12:
338                  interpolate8x8_lowpass_v(halfpel_v, src, stride, rounding);                  interpolate8x8_lowpass_v(halfpel_v, src, stride, rounding);
339                  interpolate8x8_avg2(dst, src+stride, halfpel_v, stride, rounding, 9);                  interpolate8x8_avg2(dst, src+stride, halfpel_v, stride, rounding, 8);
340                  break;                  break;
341    
342          case 13:          case 13:
343                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
344                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding, 9);                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding, 9);
345                  interpolate8x8_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);                  interpolate8x8_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
346                  interpolate8x8_avg2(dst, halfpel_v+stride, halfpel_hv, stride, rounding, 9);                  interpolate8x8_avg2(dst, halfpel_v+stride, halfpel_hv, stride, rounding, 8);
347                  break;                  break;
348    
349          case 14:          case 14:
350                  interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);
351                  interpolate8x8_avg2(dst, halfpel_h+stride, halfpel_hv, stride, rounding, 9);                  interpolate8x8_avg2(dst, halfpel_h+stride, halfpel_hv, stride, rounding, 8);
352                  break;                  break;
353    
354          case 15:          case 15:
355                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
356                  interpolate8x8_avg2(halfpel_v, src + 1, halfpel_h, stride, rounding, 9);                  interpolate8x8_avg2(halfpel_v, src + 1, halfpel_h, stride, rounding, 9);
357                  interpolate8x8_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);                  interpolate8x8_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
358                  interpolate8x8_avg2(dst, halfpel_hv, halfpel_v + stride, stride, rounding, 9);                  interpolate8x8_avg2(dst, halfpel_hv, halfpel_v + stride, stride, rounding, 8);
359                  break;                  break;
360          }          }
361  }  }
# Line 372  Line 407 
407    
408          case 1:          case 1:
409                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);
410                  interpolate8x8_avg2(dst, src, halfpel_h, stride, rounding, 9);                  interpolate8x8_avg2(dst, src, halfpel_h, stride, rounding, 8);
411                  interpolate8x8_avg2(dst+8, src+8, halfpel_h+8, stride, rounding, 9);                  interpolate8x8_avg2(dst+8, src+8, halfpel_h+8, stride, rounding, 8);
412                  interpolate8x8_avg2(dst+8*stride, src+8*stride, halfpel_h+8*stride, stride, rounding, 9);                  interpolate8x8_avg2(dst+8*stride, src+8*stride, halfpel_h+8*stride, stride, rounding, 8);
413                  interpolate8x8_avg2(dst+8*stride+8, src+8*stride+8, halfpel_h+8*stride+8, stride, rounding, 9);                  interpolate8x8_avg2(dst+8*stride+8, src+8*stride+8, halfpel_h+8*stride+8, stride, rounding, 8);
414                  break;                  break;
415    
416          case 2:          case 2:
# Line 384  Line 419 
419    
420          case 3:          case 3:
421                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);
422                  interpolate8x8_avg2(dst, src + 1, halfpel_h, stride, rounding, 9);                  interpolate8x8_avg2(dst, src + 1, halfpel_h, stride, rounding, 8);
423                  interpolate8x8_avg2(dst+8, src + 8 + 1, halfpel_h+8, stride, rounding, 9);                  interpolate8x8_avg2(dst+8, src + 8 + 1, halfpel_h+8, stride, rounding, 8);
424                  interpolate8x8_avg2(dst+8*stride, src + 8*stride + 1, halfpel_h+8*stride, stride, rounding, 9);                  interpolate8x8_avg2(dst+8*stride, src + 8*stride + 1, halfpel_h+8*stride, stride, rounding, 8);
425                  interpolate8x8_avg2(dst+8*stride+8, src+8*stride+8 + 1, halfpel_h+8*stride+8, stride, rounding, 9);                  interpolate8x8_avg2(dst+8*stride+8, src+8*stride+8 + 1, halfpel_h+8*stride+8, stride, rounding, 8);
426                  break;                  break;
427    
428          case 4:          case 4:
429                  interpolate16x16_lowpass_v(halfpel_v, src, stride, rounding);                  interpolate16x16_lowpass_v(halfpel_v, src, stride, rounding);
430                  interpolate8x8_avg2(dst, src, halfpel_v, stride, rounding, 9);                  interpolate8x8_avg2(dst, src, halfpel_v, stride, rounding, 8);
431                  interpolate8x8_avg2(dst+8, src+8, halfpel_v+8, stride, rounding, 9);                  interpolate8x8_avg2(dst+8, src+8, halfpel_v+8, stride, rounding, 8);
432                  interpolate8x8_avg2(dst+8*stride, src+8*stride, halfpel_v+8*stride, stride, rounding, 9);                  interpolate8x8_avg2(dst+8*stride, src+8*stride, halfpel_v+8*stride, stride, rounding, 8);
433                  interpolate8x8_avg2(dst+8*stride+8, src+8*stride+8, halfpel_v+8*stride+8, stride, rounding, 9);                  interpolate8x8_avg2(dst+8*stride+8, src+8*stride+8, halfpel_v+8*stride+8, stride, rounding, 8);
434                  break;                  break;
435    
436          case 5:          case 5:
# Line 406  Line 441 
441                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+8*stride+8, halfpel_h+8*stride+8, stride, rounding, 9);                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+8*stride+8, halfpel_h+8*stride+8, stride, rounding, 9);
442    
443                  interpolate16x16_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);                  interpolate16x16_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
444                  interpolate8x8_avg2(dst, halfpel_hv, halfpel_v, stride, rounding, 9);                  interpolate8x8_avg2(dst, halfpel_hv, halfpel_v, stride, rounding, 8);
445                  interpolate8x8_avg2(dst+8, halfpel_hv+8, halfpel_v+8, stride, rounding, 9);                  interpolate8x8_avg2(dst+8, halfpel_hv+8, halfpel_v+8, stride, rounding, 8);
446                  interpolate8x8_avg2(dst+8*stride, halfpel_hv+8*stride, halfpel_v+8*stride, stride, rounding, 9);                  interpolate8x8_avg2(dst+8*stride, halfpel_hv+8*stride, halfpel_v+8*stride, stride, rounding, 8);
447                  interpolate8x8_avg2(dst+8*stride+8, halfpel_hv+8*stride+8, halfpel_v+8*stride+8, stride, rounding, 9);                  interpolate8x8_avg2(dst+8*stride+8, halfpel_hv+8*stride+8, halfpel_v+8*stride+8, stride, rounding, 8);
448                  break;                  break;
449    
450          case 6:          case 6:
451                  interpolate16x16_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate16x16_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);
452                  interpolate8x8_avg2(dst, halfpel_h, halfpel_hv, stride, rounding, 9);                  interpolate8x8_avg2(dst, halfpel_h, halfpel_hv, stride, rounding, 8);
453                  interpolate8x8_avg2(dst+8, halfpel_h+8, halfpel_hv+8, stride, rounding, 9);                  interpolate8x8_avg2(dst+8, halfpel_h+8, halfpel_hv+8, stride, rounding, 8);
454                  interpolate8x8_avg2(dst+8*stride, halfpel_h+8*stride, halfpel_hv+8*stride, stride, rounding, 9);                  interpolate8x8_avg2(dst+8*stride, halfpel_h+8*stride, halfpel_hv+8*stride, stride, rounding, 8);
455                  interpolate8x8_avg2(dst+8*stride+8, halfpel_h+8*stride+8, halfpel_hv+8*stride+8, stride, rounding, 9);                  interpolate8x8_avg2(dst+8*stride+8, halfpel_h+8*stride+8, halfpel_hv+8*stride+8, stride, rounding, 8);
456                  break;                  break;
457    
458          case 7:          case 7:
# Line 428  Line 463 
463                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+1+8*stride+8, halfpel_h+8*stride+8, stride, rounding, 9);                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+1+8*stride+8, halfpel_h+8*stride+8, stride, rounding, 9);
464    
465                  interpolate16x16_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);                  interpolate16x16_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
466                  interpolate8x8_avg2(dst, halfpel_hv, halfpel_v, stride, rounding, 9);                  interpolate8x8_avg2(dst, halfpel_hv, halfpel_v, stride, rounding, 8);
467                  interpolate8x8_avg2(dst+8, halfpel_hv+8, halfpel_v+8, stride, rounding, 9);                  interpolate8x8_avg2(dst+8, halfpel_hv+8, halfpel_v+8, stride, rounding, 8);
468                  interpolate8x8_avg2(dst+8*stride, halfpel_hv+8*stride, halfpel_v+8*stride, stride, rounding, 9);                  interpolate8x8_avg2(dst+8*stride, halfpel_hv+8*stride, halfpel_v+8*stride, stride, rounding, 8);
469                  interpolate8x8_avg2(dst+8*stride+8, halfpel_hv+8*stride+8, halfpel_v+8*stride+8, stride, rounding, 9);                  interpolate8x8_avg2(dst+8*stride+8, halfpel_hv+8*stride+8, halfpel_v+8*stride+8, stride, rounding, 8);
470                  break;                  break;
471    
472          case 8:          case 8:
# Line 462  Line 497 
497    
498          case 12:          case 12:
499                  interpolate16x16_lowpass_v(halfpel_v, src, stride, rounding);                  interpolate16x16_lowpass_v(halfpel_v, src, stride, rounding);
500                  interpolate8x8_avg2(dst, src+stride, halfpel_v, stride, rounding, 9);                  interpolate8x8_avg2(dst, src+stride, halfpel_v, stride, rounding, 8);
501                  interpolate8x8_avg2(dst+8, src+stride+8, halfpel_v+8, stride, rounding, 9);                  interpolate8x8_avg2(dst+8, src+stride+8, halfpel_v+8, stride, rounding, 8);
502                  interpolate8x8_avg2(dst+8*stride, src+stride+8*stride, halfpel_v+8*stride, stride, rounding, 9);                  interpolate8x8_avg2(dst+8*stride, src+stride+8*stride, halfpel_v+8*stride, stride, rounding, 8);
503                  interpolate8x8_avg2(dst+8*stride+8, src+stride+8*stride+8, halfpel_v+8*stride+8, stride, rounding, 9);                  interpolate8x8_avg2(dst+8*stride+8, src+stride+8*stride+8, halfpel_v+8*stride+8, stride, rounding, 8);
504                  break;                  break;
505    
506          case 13:          case 13:
# Line 476  Line 511 
511                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+8*stride+8, halfpel_h+8*stride+8, stride, rounding, 9);                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+8*stride+8, halfpel_h+8*stride+8, stride, rounding, 9);
512    
513                  interpolate16x16_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);                  interpolate16x16_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
514                  interpolate8x8_avg2(dst, halfpel_hv, halfpel_v+stride, stride, rounding, 9);                  interpolate8x8_avg2(dst, halfpel_hv, halfpel_v+stride, stride, rounding, 8);
515                  interpolate8x8_avg2(dst+8, halfpel_hv+8, halfpel_v+stride+8, stride, rounding, 9);                  interpolate8x8_avg2(dst+8, halfpel_hv+8, halfpel_v+stride+8, stride, rounding, 8);
516                  interpolate8x8_avg2(dst+8*stride, halfpel_hv+8*stride, halfpel_v+stride+8*stride, stride, rounding, 9);                  interpolate8x8_avg2(dst+8*stride, halfpel_hv+8*stride, halfpel_v+stride+8*stride, stride, rounding, 8);
517                  interpolate8x8_avg2(dst+8*stride+8, halfpel_hv+8*stride+8, halfpel_v+stride+8*stride+8, stride, rounding, 9);                  interpolate8x8_avg2(dst+8*stride+8, halfpel_hv+8*stride+8, halfpel_v+stride+8*stride+8, stride, rounding, 8);
518                  break;                  break;
519    
520          case 14:          case 14:
521                  interpolate16x16_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate16x16_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);
522                  interpolate8x8_avg2(dst, halfpel_h+stride, halfpel_hv, stride, rounding, 9);                  interpolate8x8_avg2(dst, halfpel_h+stride, halfpel_hv, stride, rounding, 8);
523                  interpolate8x8_avg2(dst+8, halfpel_h+stride+8, halfpel_hv+8, stride, rounding, 9);                  interpolate8x8_avg2(dst+8, halfpel_h+stride+8, halfpel_hv+8, stride, rounding, 8);
524                  interpolate8x8_avg2(dst+8*stride, halfpel_h+stride+8*stride, halfpel_hv+8*stride, stride, rounding, 9);                  interpolate8x8_avg2(dst+8*stride, halfpel_h+stride+8*stride, halfpel_hv+8*stride, stride, rounding, 8);
525                  interpolate8x8_avg2(dst+8*stride+8, halfpel_h+stride+8*stride+8, halfpel_hv+8*stride+8, stride, rounding, 9);                  interpolate8x8_avg2(dst+8*stride+8, halfpel_h+stride+8*stride+8, halfpel_hv+8*stride+8, stride, rounding, 8);
526                  break;                  break;
527    
528          case 15:          case 15:
# Line 498  Line 533 
533                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+1+8*stride+8, halfpel_h+8*stride+8, stride, rounding, 9);                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+1+8*stride+8, halfpel_h+8*stride+8, stride, rounding, 9);
534    
535                  interpolate16x16_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);                  interpolate16x16_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
536                  interpolate8x8_avg2(dst, halfpel_hv, halfpel_v+stride, stride, rounding, 9);                  interpolate8x8_avg2(dst, halfpel_hv, halfpel_v+stride, stride, rounding, 8);
537                  interpolate8x8_avg2(dst+8, halfpel_hv+8, halfpel_v+stride+8, stride, rounding, 9);                  interpolate8x8_avg2(dst+8, halfpel_hv+8, halfpel_v+stride+8, stride, rounding, 8);
538                  interpolate8x8_avg2(dst+8*stride, halfpel_hv+8*stride, halfpel_v+stride+8*stride, stride, rounding, 9);                  interpolate8x8_avg2(dst+8*stride, halfpel_hv+8*stride, halfpel_v+stride+8*stride, stride, rounding, 8);
539                  interpolate8x8_avg2(dst+8*stride+8, halfpel_hv+8*stride+8, halfpel_v+stride+8*stride+8, stride, rounding, 9);                  interpolate8x8_avg2(dst+8*stride+8, halfpel_hv+8*stride+8, halfpel_v+stride+8*stride+8, stride, rounding, 8);
540                  break;                  break;
541          }          }
542  }  }

Legend:
Removed from v.1.5.2.6  
changed lines
  Added in v.1.5.2.8

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4