[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.4, Sun Oct 13 13:52:01 2002 UTC revision 1.5.2.5, Tue Oct 15 22:26:59 2002 UTC
# Line 198  Line 198 
198          return buffer;          return buffer;
199  }  }
200    
   
201  static __inline void interpolate8x8_quarterpel(uint8_t * const cur,  static __inline void interpolate8x8_quarterpel(uint8_t * const cur,
202                                       uint8_t * const refn,                                       uint8_t * const refn,
203                                           uint8_t * const refh,                                           uint8_t * const refh,
# Line 261  Line 260 
260                  break;                  break;
261    
262          case 5:          case 5:
263                  interpolate8x8_lowpass_v(halfpel_v, src, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
264                  interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding);
265                  interpolate8x8_avg4(dst, src, halfpel_h, halfpel_v, halfpel_hv, stride, rounding);                  interpolate8x8_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
266                    interpolate8x8_avg2(dst, halfpel_v, halfpel_hv, stride, rounding);
267                  break;                  break;
268    
269          case 6:          case 6:
# Line 272  Line 272 
272                  break;                  break;
273    
274          case 7:          case 7:
275                  interpolate8x8_lowpass_v(halfpel_v, src+1, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
276                  interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src + 1, halfpel_h, stride, rounding);
277                  interpolate8x8_avg4(dst, src+1, halfpel_h, halfpel_v, halfpel_hv, stride, rounding);                  interpolate8x8_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
278                    interpolate8x8_avg2(dst, halfpel_v, halfpel_hv, stride, rounding);
279                  break;                  break;
280    
281          case 8:          case 8:
# Line 282  Line 283 
283                  break;                  break;
284    
285          case 9:          case 9:
286                  interpolate8x8_lowpass_v(halfpel_v, src, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
287                  interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding);
288                  interpolate8x8_avg2(dst, halfpel_v, halfpel_hv, stride, rounding);                  interpolate8x8_lowpass_v(dst, halfpel_v, stride, rounding);
289                  break;                  break;
290    
291          case 10:          case 10:
# Line 292  Line 293 
293                  break;                  break;
294    
295          case 11:          case 11:
296                  interpolate8x8_lowpass_v(halfpel_v, src+1, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
297                  interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src + 1, halfpel_h, stride, rounding);
298                  interpolate8x8_avg2(dst, halfpel_v, halfpel_hv, stride, rounding);                  interpolate8x8_lowpass_v(dst, halfpel_v, stride, rounding);
299                  break;                  break;
300    
301          case 12:          case 12:
# Line 303  Line 304 
304                  break;                  break;
305    
306          case 13:          case 13:
307                  interpolate8x8_lowpass_v(halfpel_v, src, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
308                  interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding);
309                  interpolate8x8_avg4(dst, src+stride, halfpel_h+stride, halfpel_v, halfpel_hv, stride, rounding);                  interpolate8x8_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
310                    interpolate8x8_avg2(dst, halfpel_v+stride, halfpel_hv, stride, rounding);
311                  break;                  break;
312    
313          case 14:          case 14:
# Line 314  Line 316 
316                  break;                  break;
317    
318          case 15:          case 15:
319                  interpolate8x8_lowpass_v(halfpel_v, src+1, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
320                  interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src + 1, halfpel_h, stride, rounding);
321                  interpolate8x8_avg4(dst, src+stride+1, halfpel_h+stride, halfpel_v, halfpel_hv, stride, rounding);                  interpolate8x8_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
322                    interpolate8x8_avg2(dst, halfpel_hv, halfpel_v + stride, stride, rounding);
323                  break;                  break;
324          }          }
325  }  }
326    
   
327  static __inline void interpolate16x16_quarterpel(uint8_t * const cur,  static __inline void interpolate16x16_quarterpel(uint8_t * const cur,
328                                       uint8_t * const refn,                                       uint8_t * const refn,
329                                           uint8_t * const refh,                                           uint8_t * const refh,
# Line 396  Line 398 
398                  break;                  break;
399    
400          case 5:          case 5:
401                  interpolate16x16_lowpass_v(halfpel_v, src, stride, rounding);                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);
402                  interpolate16x16_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding);
403                  interpolate8x8_avg4(dst, src, halfpel_h, halfpel_v, halfpel_hv, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8, src + 8, halfpel_h+8, stride, rounding);
404                  interpolate8x8_avg4(dst+8, src+8, halfpel_h+8, halfpel_v+8, halfpel_hv+8, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8*stride, src + 8*stride, halfpel_h+8*stride, stride, rounding);
405                  interpolate8x8_avg4(dst+8*stride, src+8*stride, halfpel_h+8*stride, halfpel_v+8*stride, halfpel_hv+8*stride, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+8*stride+8, halfpel_h+8*stride+8, stride, rounding);
406                  interpolate8x8_avg4(dst+8*stride+8, src+8*stride+8, halfpel_h+8*stride+8, halfpel_v+8*stride+8, halfpel_hv+8*stride+8, stride, rounding);  
407                    interpolate16x16_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
408                    interpolate8x8_avg2(dst, halfpel_hv, halfpel_v, stride, rounding);
409                    interpolate8x8_avg2(dst+8, halfpel_hv+8, halfpel_v+8, stride, rounding);
410                    interpolate8x8_avg2(dst+8*stride, halfpel_hv+8*stride, halfpel_v+8*stride, stride, rounding);
411                    interpolate8x8_avg2(dst+8*stride+8, halfpel_hv+8*stride+8, halfpel_v+8*stride+8, stride, rounding);
412                  break;                  break;
413    
414          case 6:          case 6:
# Line 413  Line 420 
420                  break;                  break;
421    
422          case 7:          case 7:
423                  interpolate16x16_lowpass_v(halfpel_v, src+1, stride, rounding);                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);
424                  interpolate16x16_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src+1, halfpel_h, stride, rounding);
425                  interpolate8x8_avg4(dst, src+1, halfpel_h, halfpel_v, halfpel_hv, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8, src+1 + 8, halfpel_h+8, stride, rounding);
426                  interpolate8x8_avg4(dst+8, src+8+1, halfpel_h+8, halfpel_v+8, halfpel_hv+8, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8*stride, src+1 + 8*stride, halfpel_h+8*stride, stride, rounding);
427                  interpolate8x8_avg4(dst+8*stride, src+1+8*stride, halfpel_h+8*stride, halfpel_v+8*stride, halfpel_hv+8*stride, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+1+8*stride+8, halfpel_h+8*stride+8, stride, rounding);
428                  interpolate8x8_avg4(dst+8*stride+8, src+1+8*stride+8, halfpel_h+8*stride+8, halfpel_v+8*stride+8, halfpel_hv+8*stride+8, stride, rounding);  
429                    interpolate16x16_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
430                    interpolate8x8_avg2(dst, halfpel_hv, halfpel_v, stride, rounding);
431                    interpolate8x8_avg2(dst+8, halfpel_hv+8, halfpel_v+8, stride, rounding);
432                    interpolate8x8_avg2(dst+8*stride, halfpel_hv+8*stride, halfpel_v+8*stride, stride, rounding);
433                    interpolate8x8_avg2(dst+8*stride+8, halfpel_hv+8*stride+8, halfpel_v+8*stride+8, stride, rounding);
434                  break;                  break;
435    
436          case 8:          case 8:
# Line 426  Line 438 
438                  break;                  break;
439    
440          case 9:          case 9:
441                  interpolate16x16_lowpass_v(halfpel_v, src, stride, rounding);                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);
442                  interpolate16x16_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding);
443                  interpolate8x8_avg2(dst, halfpel_v, halfpel_hv, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8, src + 8, halfpel_h+8, stride, rounding);
444                  interpolate8x8_avg2(dst+8, halfpel_v+8, halfpel_hv+8, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8*stride, src + 8*stride, halfpel_h+8*stride, stride, rounding);
445                  interpolate8x8_avg2(dst+8*stride, halfpel_v+8*stride, halfpel_hv+8*stride, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+8*stride+8, halfpel_h+8*stride+8, stride, rounding);
446                  interpolate8x8_avg2(dst+8*stride+8, halfpel_v+8*stride+8, halfpel_hv+8*stride+8, stride, rounding);                  interpolate16x16_lowpass_v(dst, halfpel_v, stride, rounding);
447                  break;                  break;
448    
449          case 10:          case 10:
# Line 439  Line 451 
451                  break;                  break;
452    
453          case 11:          case 11:
454                  interpolate16x16_lowpass_v(halfpel_v, src+1, stride, rounding);                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);
455                  interpolate16x16_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src+1, halfpel_h, stride, rounding);
456                  interpolate8x8_avg2(dst, halfpel_v, halfpel_hv, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8, src+1 + 8, halfpel_h+8, stride, rounding);
457                  interpolate8x8_avg2(dst+8, halfpel_v+8, halfpel_hv+8, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8*stride, src+1 + 8*stride, halfpel_h+8*stride, stride, rounding);
458                  interpolate8x8_avg2(dst+8*stride, halfpel_v+8*stride, halfpel_hv+8*stride, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+1+8*stride+8, halfpel_h+8*stride+8, stride, rounding);
459                  interpolate8x8_avg2(dst+8*stride+8, halfpel_v+8*stride+8, halfpel_hv+8*stride+8, stride, rounding);                  interpolate16x16_lowpass_v(dst, halfpel_v, stride, rounding);
460                  break;                  break;
461    
462          case 12:          case 12:
# Line 456  Line 468 
468                  break;                  break;
469    
470          case 13:          case 13:
471                  interpolate16x16_lowpass_v(halfpel_v, src, stride, rounding);                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);
472                  interpolate16x16_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding);
473                  interpolate8x8_avg4(dst, src+stride, halfpel_h+stride, halfpel_v, halfpel_hv, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8, src + 8, halfpel_h+8, stride, rounding);
474                  interpolate8x8_avg4(dst+8, src+stride+8, halfpel_h+stride+8, halfpel_v+8, halfpel_hv+8, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8*stride, src + 8*stride, halfpel_h+8*stride, stride, rounding);
475                  interpolate8x8_avg4(dst+8*stride, src+stride+8*stride, halfpel_h+stride+8*stride, halfpel_v+8*stride, halfpel_hv+8*stride, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+8*stride+8, halfpel_h+8*stride+8, stride, rounding);
476                  interpolate8x8_avg4(dst+8*stride+8, src+stride+8*stride+8, halfpel_h+stride+8*stride+8, halfpel_v+8*stride+8, halfpel_hv+8*stride+8, stride, rounding);  
477                    interpolate16x16_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
478                    interpolate8x8_avg2(dst, halfpel_hv, halfpel_v+stride, stride, rounding);
479                    interpolate8x8_avg2(dst+8, halfpel_hv+8, halfpel_v+stride+8, stride, rounding);
480                    interpolate8x8_avg2(dst+8*stride, halfpel_hv+8*stride, halfpel_v+stride+8*stride, stride, rounding);
481                    interpolate8x8_avg2(dst+8*stride+8, halfpel_hv+8*stride+8, halfpel_v+stride+8*stride+8, stride, rounding);
482                  break;                  break;
483    
484          case 14:          case 14:
# Line 473  Line 490 
490                  break;                  break;
491    
492          case 15:          case 15:
493                  interpolate16x16_lowpass_v(halfpel_v, src+1, stride, rounding);                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);
494                  interpolate16x16_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src+1, halfpel_h, stride, rounding);
495                  interpolate8x8_avg4(dst, src+stride+1, halfpel_h+stride, halfpel_v, halfpel_hv, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8, src+1 + 8, halfpel_h+8, stride, rounding);
496                  interpolate8x8_avg4(dst+8, src+stride+1+8, halfpel_h+stride+8, halfpel_v+8, halfpel_hv+8, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8*stride, src+1 + 8*stride, halfpel_h+8*stride, stride, rounding);
497                  interpolate8x8_avg4(dst+8*stride, src+stride+1+8*stride, halfpel_h+stride+8*stride, halfpel_v+8*stride, halfpel_hv+8*stride, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+1+8*stride+8, halfpel_h+8*stride+8, stride, rounding);
498                  interpolate8x8_avg4(dst+8*stride+8, src+stride+1+8*stride+8, halfpel_h+stride+8*stride+8, halfpel_v+8*stride+8, halfpel_hv+8*stride+8, stride, rounding);  
499                  break;                  interpolate16x16_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
500          default:                  interpolate8x8_avg2(dst, halfpel_hv, halfpel_v+stride, stride, rounding);
501                  interpolate8x8_quarterpel(cur, refn, refh, refv, refhv, x, y, dx, dy, stride, rounding);                  interpolate8x8_avg2(dst+8, halfpel_hv+8, halfpel_v+stride+8, stride, rounding);
502                  interpolate8x8_quarterpel(cur, refn, refh, refv, refhv, x+8, y, dx, dy, stride, rounding);                  interpolate8x8_avg2(dst+8*stride, halfpel_hv+8*stride, halfpel_v+stride+8*stride, stride, rounding);
503                  interpolate8x8_quarterpel(cur, refn, refh, refv, refhv, x, y+8, dx, dy, stride, rounding);                  interpolate8x8_avg2(dst+8*stride+8, halfpel_hv+8*stride+8, halfpel_v+stride+8*stride+8, stride, rounding);
                 interpolate8x8_quarterpel(cur, refn, refh, refv, refhv, x+8, y+8, dx, dy, stride, rounding);  
                 return;  
504                  break;                  break;
505          }          }
506  }  }
   
507  #endif  #endif

Legend:
Removed from v.1.5.2.4  
changed lines
  Added in v.1.5.2.5

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