[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.5, Tue Oct 15 22:26:59 2002 UTC revision 1.10.2.1, Mon Jun 9 01:20:59 2003 UTC
# Line 13  Line 13 
13                                                                          const uint8_t *src1,                                                                          const uint8_t *src1,
14                                                                          const uint8_t *src2,                                                                          const uint8_t *src2,
15                                                                          const uint32_t stride,                                                                          const uint32_t stride,
16                                                                          const uint32_t rounding);                                                                          const uint32_t rounding,
17                                                                            const uint32_t height);
18  typedef INTERPOLATE8X8_AVG2 *INTERPOLATE8X8_AVG2_PTR;  typedef INTERPOLATE8X8_AVG2 *INTERPOLATE8X8_AVG2_PTR;
19    
20  typedef void (INTERPOLATE8X8_AVG4) (uint8_t *dst,  typedef void (INTERPOLATE8X8_AVG4) (uint8_t *dst,
# Line 82  Line 83 
83  INTERPOLATE8X8 interpolate8x8_halfpel_v_3dn;  INTERPOLATE8X8 interpolate8x8_halfpel_v_3dn;
84  INTERPOLATE8X8 interpolate8x8_halfpel_hv_3dn;  INTERPOLATE8X8 interpolate8x8_halfpel_hv_3dn;
85    
86    INTERPOLATE8X8 interpolate8x8_halfpel_h_3dne;
87    INTERPOLATE8X8 interpolate8x8_halfpel_v_3dne;
88    INTERPOLATE8X8 interpolate8x8_halfpel_hv_3dne;
89    
90  INTERPOLATE8X8 interpolate8x8_halfpel_h_ia64;  INTERPOLATE8X8 interpolate8x8_halfpel_h_ia64;
91  INTERPOLATE8X8 interpolate8x8_halfpel_v_ia64;  INTERPOLATE8X8 interpolate8x8_halfpel_v_ia64;
92  INTERPOLATE8X8 interpolate8x8_halfpel_hv_ia64;  INTERPOLATE8X8 interpolate8x8_halfpel_hv_ia64;
# Line 119  Line 124 
124  {  {
125          int32_t ddx, ddy;          int32_t ddx, ddy;
126    
127          switch (((dx & 1) << 1) + (dy & 1))     // ((dx%2)?2:0)+((dy%2)?1:0)          switch (((dx & 1) << 1) + (dy & 1))     /* ((dx%2)?2:0)+((dy%2)?1:0) */
128          {          {
129          case 0:          case 0:
130                  ddx = dx / 2;                  ddx = dx / 2;
# Line 154  Line 159 
159          }          }
160  }  }
161    
162    
163    static __inline void
164    interpolate16x16_switch(uint8_t * const cur,
165                                              const uint8_t * const refn,
166                                              const uint32_t x,
167                                              const uint32_t y,
168                                              const int32_t dx,
169                                              const int dy,
170                                              const uint32_t stride,
171                                              const uint32_t rounding)
172    {
173            interpolate8x8_switch(cur, refn, x,   y,   dx, dy, stride, rounding);
174            interpolate8x8_switch(cur, refn, x+8, y,   dx, dy, stride, rounding);
175            interpolate8x8_switch(cur, refn, x,   y+8, dx, dy, stride, rounding);
176            interpolate8x8_switch(cur, refn, x+8, y+8, dx, dy, stride, rounding);
177    }
178    
179    
180    static __inline void
181    interpolate32x32_switch(uint8_t * const cur,
182                                              const uint8_t * const refn,
183                                              const uint32_t x,
184                                              const uint32_t y,
185                                              const int32_t dx,
186                                              const int dy,
187                                              const uint32_t stride,
188                                              const uint32_t rounding)
189    {
190            interpolate16x16_switch(cur, refn, x,    y,    dx, dy, stride, rounding);
191            interpolate16x16_switch(cur, refn, x+16, y,    dx, dy, stride, rounding);
192            interpolate16x16_switch(cur, refn, x,    y+16, dx, dy, stride, rounding);
193            interpolate16x16_switch(cur, refn, x+16, y+16, dx, dy, stride, rounding);
194    }
195    
196    
197  static __inline uint8_t *  static __inline uint8_t *
198  interpolate8x8_switch2(uint8_t * const buffer,  interpolate8x8_switch2(uint8_t * const buffer,
199                                            const uint8_t * const refn,                                            const uint8_t * const refn,
# Line 166  Line 206 
206  {  {
207          int32_t ddx, ddy;          int32_t ddx, ddy;
208    
209          switch (((dx & 1) << 1) + (dy & 1))     // ((dx%2)?2:0)+((dy%2)?1:0)          switch (((dx & 1) << 1) + (dy & 1))     /* ((dx%2)?2:0)+((dy%2)?1:0) */
210          {          {
211          case 0:          case 0:
212                  return (uint8_t *)refn + (int)((y + dy/2) * stride + x + dx/2);                  return (uint8_t *)refn + (int)((y + dy/2) * stride + x + dx/2);
# Line 242  Line 282 
282    
283          case 1:          case 1:
284                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
285                  interpolate8x8_avg2(dst, src, halfpel_h, stride, rounding);                  interpolate8x8_avg2(dst, src, halfpel_h, stride, rounding, 8);
286                  break;                  break;
287    
288          case 2:          case 2:
# Line 251  Line 291 
291    
292          case 3:          case 3:
293                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
294                  interpolate8x8_avg2(dst, src + 1, halfpel_h, stride, rounding);                  interpolate8x8_avg2(dst, src + 1, halfpel_h, stride, rounding, 8);
295                  break;                  break;
296    
297          case 4:          case 4:
298                  interpolate8x8_lowpass_v(halfpel_v, src, stride, rounding);                  interpolate8x8_lowpass_v(halfpel_v, src, stride, rounding);
299                  interpolate8x8_avg2(dst, src, halfpel_v, stride, rounding);                  interpolate8x8_avg2(dst, src, halfpel_v, stride, rounding, 8);
300                  break;                  break;
301    
302          case 5:          case 5:
303                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
304                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding, 9);
305                  interpolate8x8_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);                  interpolate8x8_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
306                  interpolate8x8_avg2(dst, halfpel_v, halfpel_hv, stride, rounding);                  interpolate8x8_avg2(dst, halfpel_v, halfpel_hv, stride, rounding, 8);
307                  break;                  break;
308    
309          case 6:          case 6:
310                  interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);
311                  interpolate8x8_avg2(dst, halfpel_h, halfpel_hv, stride, rounding);                  interpolate8x8_avg2(dst, halfpel_h, halfpel_hv, stride, rounding, 8);
312                  break;                  break;
313    
314          case 7:          case 7:
315                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
316                  interpolate8x8_avg2(halfpel_v, src + 1, halfpel_h, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src + 1, halfpel_h, stride, rounding, 9);
317                  interpolate8x8_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);                  interpolate8x8_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
318                  interpolate8x8_avg2(dst, halfpel_v, halfpel_hv, stride, rounding);                  interpolate8x8_avg2(dst, halfpel_v, halfpel_hv, stride, rounding, 8);
319                  break;                  break;
320    
321          case 8:          case 8:
# Line 284  Line 324 
324    
325          case 9:          case 9:
326                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
327                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding, 9);
328                  interpolate8x8_lowpass_v(dst, halfpel_v, stride, rounding);                  interpolate8x8_lowpass_v(dst, halfpel_v, stride, rounding);
329                  break;                  break;
330    
# Line 294  Line 334 
334    
335          case 11:          case 11:
336                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
337                  interpolate8x8_avg2(halfpel_v, src + 1, halfpel_h, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src + 1, halfpel_h, stride, rounding, 9);
338                  interpolate8x8_lowpass_v(dst, halfpel_v, stride, rounding);                  interpolate8x8_lowpass_v(dst, halfpel_v, stride, rounding);
339                  break;                  break;
340    
341          case 12:          case 12:
342                  interpolate8x8_lowpass_v(halfpel_v, src, stride, rounding);                  interpolate8x8_lowpass_v(halfpel_v, src, stride, rounding);
343                  interpolate8x8_avg2(dst, src+stride, halfpel_v, stride, rounding);                  interpolate8x8_avg2(dst, src+stride, halfpel_v, stride, rounding, 8);
344                  break;                  break;
345    
346          case 13:          case 13:
347                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
348                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding, 9);
349                  interpolate8x8_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);                  interpolate8x8_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
350                  interpolate8x8_avg2(dst, halfpel_v+stride, halfpel_hv, stride, rounding);                  interpolate8x8_avg2(dst, halfpel_v+stride, halfpel_hv, stride, rounding, 8);
351                  break;                  break;
352    
353          case 14:          case 14:
354                  interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);
355                  interpolate8x8_avg2(dst, halfpel_h+stride, halfpel_hv, stride, rounding);                  interpolate8x8_avg2(dst, halfpel_h+stride, halfpel_hv, stride, rounding, 8);
356                  break;                  break;
357    
358          case 15:          case 15:
359                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
360                  interpolate8x8_avg2(halfpel_v, src + 1, halfpel_h, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src + 1, halfpel_h, stride, rounding, 9);
361                  interpolate8x8_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);                  interpolate8x8_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
362                  interpolate8x8_avg2(dst, halfpel_hv, halfpel_v + stride, stride, rounding);                  interpolate8x8_avg2(dst, halfpel_hv, halfpel_v + stride, stride, rounding, 8);
363                  break;                  break;
364          }          }
365  }  }
# Line 363  Line 403 
403          switch((y_frac << 2) | (x_frac)) {          switch((y_frac << 2) | (x_frac)) {
404    
405          case 0:          case 0:
406                  transfer8x8_copy(dst, src, stride);                  transfer16x16_copy(dst, src, stride);
                 transfer8x8_copy(dst+8, src+8, stride);  
                 transfer8x8_copy(dst+8*stride, src+8*stride, stride);  
                 transfer8x8_copy(dst+8*stride+8, src+8*stride+8, stride);  
407                  break;                  break;
408    
409          case 1:          case 1:
410                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);
411                  interpolate8x8_avg2(dst, src, halfpel_h, stride, rounding);                  interpolate8x8_avg2(dst, src, halfpel_h, stride, rounding, 8);
412                  interpolate8x8_avg2(dst+8, src+8, halfpel_h+8, stride, rounding);                  interpolate8x8_avg2(dst+8, src+8, halfpel_h+8, stride, rounding, 8);
413                  interpolate8x8_avg2(dst+8*stride, src+8*stride, halfpel_h+8*stride, stride, rounding);                  interpolate8x8_avg2(dst+8*stride, src+8*stride, halfpel_h+8*stride, stride, rounding, 8);
414                  interpolate8x8_avg2(dst+8*stride+8, src+8*stride+8, halfpel_h+8*stride+8, stride, rounding);                  interpolate8x8_avg2(dst+8*stride+8, src+8*stride+8, halfpel_h+8*stride+8, stride, rounding, 8);
415                  break;                  break;
416    
417          case 2:          case 2:
# Line 383  Line 420 
420    
421          case 3:          case 3:
422                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);
423                  interpolate8x8_avg2(dst, src + 1, halfpel_h, stride, rounding);                  interpolate8x8_avg2(dst, src + 1, halfpel_h, stride, rounding, 8);
424                  interpolate8x8_avg2(dst+8, src + 8 + 1, halfpel_h+8, stride, rounding);                  interpolate8x8_avg2(dst+8, src + 8 + 1, halfpel_h+8, stride, rounding, 8);
425                  interpolate8x8_avg2(dst+8*stride, src + 8*stride + 1, halfpel_h+8*stride, stride, rounding);                  interpolate8x8_avg2(dst+8*stride, src + 8*stride + 1, halfpel_h+8*stride, stride, rounding, 8);
426                  interpolate8x8_avg2(dst+8*stride+8, src+8*stride+8 + 1, halfpel_h+8*stride+8, stride, rounding);                  interpolate8x8_avg2(dst+8*stride+8, src+8*stride+8 + 1, halfpel_h+8*stride+8, stride, rounding, 8);
427                  break;                  break;
428    
429          case 4:          case 4:
430                  interpolate16x16_lowpass_v(halfpel_v, src, stride, rounding);                  interpolate16x16_lowpass_v(halfpel_v, src, stride, rounding);
431                  interpolate8x8_avg2(dst, src, halfpel_v, stride, rounding);                  interpolate8x8_avg2(dst, src, halfpel_v, stride, rounding, 8);
432                  interpolate8x8_avg2(dst+8, src+8, halfpel_v+8, stride, rounding);                  interpolate8x8_avg2(dst+8, src+8, halfpel_v+8, stride, rounding, 8);
433                  interpolate8x8_avg2(dst+8*stride, src+8*stride, halfpel_v+8*stride, stride, rounding);                  interpolate8x8_avg2(dst+8*stride, src+8*stride, halfpel_v+8*stride, stride, rounding, 8);
434                  interpolate8x8_avg2(dst+8*stride+8, src+8*stride+8, halfpel_v+8*stride+8, stride, rounding);                  interpolate8x8_avg2(dst+8*stride+8, src+8*stride+8, halfpel_v+8*stride+8, stride, rounding, 8);
435                  break;                  break;
436    
437          case 5:          case 5:
438                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);
439                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding, 9);
440                  interpolate8x8_avg2(halfpel_v+8, src + 8, halfpel_h+8, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8, src + 8, halfpel_h+8, stride, rounding, 9);
441                  interpolate8x8_avg2(halfpel_v+8*stride, src + 8*stride, halfpel_h+8*stride, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8*stride, src + 8*stride, halfpel_h+8*stride, stride, rounding, 9);
442                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+8*stride+8, halfpel_h+8*stride+8, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+8*stride+8, halfpel_h+8*stride+8, stride, rounding, 9);
443    
444                  interpolate16x16_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);                  interpolate16x16_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
445                  interpolate8x8_avg2(dst, halfpel_hv, halfpel_v, stride, rounding);                  interpolate8x8_avg2(dst, halfpel_hv, halfpel_v, stride, rounding, 8);
446                  interpolate8x8_avg2(dst+8, halfpel_hv+8, halfpel_v+8, stride, rounding);                  interpolate8x8_avg2(dst+8, halfpel_hv+8, halfpel_v+8, stride, rounding, 8);
447                  interpolate8x8_avg2(dst+8*stride, halfpel_hv+8*stride, halfpel_v+8*stride, stride, rounding);                  interpolate8x8_avg2(dst+8*stride, halfpel_hv+8*stride, halfpel_v+8*stride, stride, rounding, 8);
448                  interpolate8x8_avg2(dst+8*stride+8, halfpel_hv+8*stride+8, halfpel_v+8*stride+8, stride, rounding);                  interpolate8x8_avg2(dst+8*stride+8, halfpel_hv+8*stride+8, halfpel_v+8*stride+8, stride, rounding, 8);
449                  break;                  break;
450    
451          case 6:          case 6:
452                  interpolate16x16_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate16x16_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);
453                  interpolate8x8_avg2(dst, halfpel_h, halfpel_hv, stride, rounding);                  interpolate8x8_avg2(dst, halfpel_h, halfpel_hv, stride, rounding, 8);
454                  interpolate8x8_avg2(dst+8, halfpel_h+8, halfpel_hv+8, stride, rounding);                  interpolate8x8_avg2(dst+8, halfpel_h+8, halfpel_hv+8, stride, rounding, 8);
455                  interpolate8x8_avg2(dst+8*stride, halfpel_h+8*stride, halfpel_hv+8*stride, stride, rounding);                  interpolate8x8_avg2(dst+8*stride, halfpel_h+8*stride, halfpel_hv+8*stride, stride, rounding, 8);
456                  interpolate8x8_avg2(dst+8*stride+8, halfpel_h+8*stride+8, halfpel_hv+8*stride+8, stride, rounding);                  interpolate8x8_avg2(dst+8*stride+8, halfpel_h+8*stride+8, halfpel_hv+8*stride+8, stride, rounding, 8);
457                  break;                  break;
458    
459          case 7:          case 7:
460                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);
461                  interpolate8x8_avg2(halfpel_v, src+1, halfpel_h, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src+1, halfpel_h, stride, rounding, 9);
462                  interpolate8x8_avg2(halfpel_v+8, src+1 + 8, halfpel_h+8, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8, src+1 + 8, halfpel_h+8, stride, rounding, 9);
463                  interpolate8x8_avg2(halfpel_v+8*stride, src+1 + 8*stride, halfpel_h+8*stride, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8*stride, src+1 + 8*stride, halfpel_h+8*stride, stride, rounding, 9);
464                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+1+8*stride+8, halfpel_h+8*stride+8, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+1+8*stride+8, halfpel_h+8*stride+8, stride, rounding, 9);
465    
466                  interpolate16x16_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);                  interpolate16x16_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
467                  interpolate8x8_avg2(dst, halfpel_hv, halfpel_v, stride, rounding);                  interpolate8x8_avg2(dst, halfpel_hv, halfpel_v, stride, rounding, 8);
468                  interpolate8x8_avg2(dst+8, halfpel_hv+8, halfpel_v+8, stride, rounding);                  interpolate8x8_avg2(dst+8, halfpel_hv+8, halfpel_v+8, stride, rounding, 8);
469                  interpolate8x8_avg2(dst+8*stride, halfpel_hv+8*stride, halfpel_v+8*stride, stride, rounding);                  interpolate8x8_avg2(dst+8*stride, halfpel_hv+8*stride, halfpel_v+8*stride, stride, rounding, 8);
470                  interpolate8x8_avg2(dst+8*stride+8, halfpel_hv+8*stride+8, halfpel_v+8*stride+8, stride, rounding);                  interpolate8x8_avg2(dst+8*stride+8, halfpel_hv+8*stride+8, halfpel_v+8*stride+8, stride, rounding, 8);
471                  break;                  break;
472    
473          case 8:          case 8:
# Line 439  Line 476 
476    
477          case 9:          case 9:
478                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);
479                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding, 9);
480                  interpolate8x8_avg2(halfpel_v+8, src + 8, halfpel_h+8, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8, src + 8, halfpel_h+8, stride, rounding, 9);
481                  interpolate8x8_avg2(halfpel_v+8*stride, src + 8*stride, halfpel_h+8*stride, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8*stride, src + 8*stride, halfpel_h+8*stride, stride, rounding, 9);
482                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+8*stride+8, halfpel_h+8*stride+8, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+8*stride+8, halfpel_h+8*stride+8, stride, rounding, 9);
483                  interpolate16x16_lowpass_v(dst, halfpel_v, stride, rounding);                  interpolate16x16_lowpass_v(dst, halfpel_v, stride, rounding);
484                  break;                  break;
485    
# Line 452  Line 489 
489    
490          case 11:          case 11:
491                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);
492                  interpolate8x8_avg2(halfpel_v, src+1, halfpel_h, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src+1, halfpel_h, stride, rounding, 9);
493                  interpolate8x8_avg2(halfpel_v+8, src+1 + 8, halfpel_h+8, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8, src+1 + 8, halfpel_h+8, stride, rounding, 9);
494                  interpolate8x8_avg2(halfpel_v+8*stride, src+1 + 8*stride, halfpel_h+8*stride, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8*stride, src+1 + 8*stride, halfpel_h+8*stride, stride, rounding, 9);
495                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+1+8*stride+8, halfpel_h+8*stride+8, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+1+8*stride+8, halfpel_h+8*stride+8, stride, rounding, 9);
496                  interpolate16x16_lowpass_v(dst, halfpel_v, stride, rounding);                  interpolate16x16_lowpass_v(dst, halfpel_v, stride, rounding);
497                  break;                  break;
498    
499          case 12:          case 12:
500                  interpolate16x16_lowpass_v(halfpel_v, src, stride, rounding);                  interpolate16x16_lowpass_v(halfpel_v, src, stride, rounding);
501                  interpolate8x8_avg2(dst, src+stride, halfpel_v, stride, rounding);                  interpolate8x8_avg2(dst, src+stride, halfpel_v, stride, rounding, 8);
502                  interpolate8x8_avg2(dst+8, src+stride+8, halfpel_v+8, stride, rounding);                  interpolate8x8_avg2(dst+8, src+stride+8, halfpel_v+8, stride, rounding, 8);
503                  interpolate8x8_avg2(dst+8*stride, src+stride+8*stride, halfpel_v+8*stride, stride, rounding);                  interpolate8x8_avg2(dst+8*stride, src+stride+8*stride, halfpel_v+8*stride, stride, rounding, 8);
504                  interpolate8x8_avg2(dst+8*stride+8, src+stride+8*stride+8, halfpel_v+8*stride+8, stride, rounding);                  interpolate8x8_avg2(dst+8*stride+8, src+stride+8*stride+8, halfpel_v+8*stride+8, stride, rounding, 8);
505                  break;                  break;
506    
507          case 13:          case 13:
508                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);
509                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding, 9);
510                  interpolate8x8_avg2(halfpel_v+8, src + 8, halfpel_h+8, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8, src + 8, halfpel_h+8, stride, rounding, 9);
511                  interpolate8x8_avg2(halfpel_v+8*stride, src + 8*stride, halfpel_h+8*stride, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8*stride, src + 8*stride, halfpel_h+8*stride, stride, rounding, 9);
512                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+8*stride+8, halfpel_h+8*stride+8, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+8*stride+8, halfpel_h+8*stride+8, stride, rounding, 9);
513    
514                  interpolate16x16_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);                  interpolate16x16_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
515                  interpolate8x8_avg2(dst, halfpel_hv, halfpel_v+stride, stride, rounding);                  interpolate8x8_avg2(dst, halfpel_hv, halfpel_v+stride, stride, rounding, 8);
516                  interpolate8x8_avg2(dst+8, halfpel_hv+8, halfpel_v+stride+8, stride, rounding);                  interpolate8x8_avg2(dst+8, halfpel_hv+8, halfpel_v+stride+8, stride, rounding, 8);
517                  interpolate8x8_avg2(dst+8*stride, halfpel_hv+8*stride, halfpel_v+stride+8*stride, stride, rounding);                  interpolate8x8_avg2(dst+8*stride, halfpel_hv+8*stride, halfpel_v+stride+8*stride, stride, rounding, 8);
518                  interpolate8x8_avg2(dst+8*stride+8, halfpel_hv+8*stride+8, halfpel_v+stride+8*stride+8, stride, rounding);                  interpolate8x8_avg2(dst+8*stride+8, halfpel_hv+8*stride+8, halfpel_v+stride+8*stride+8, stride, rounding, 8);
519                  break;                  break;
520    
521          case 14:          case 14:
522                  interpolate16x16_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate16x16_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);
523                  interpolate8x8_avg2(dst, halfpel_h+stride, halfpel_hv, stride, rounding);                  interpolate8x8_avg2(dst, halfpel_h+stride, halfpel_hv, stride, rounding, 8);
524                  interpolate8x8_avg2(dst+8, halfpel_h+stride+8, halfpel_hv+8, stride, rounding);                  interpolate8x8_avg2(dst+8, halfpel_h+stride+8, halfpel_hv+8, stride, rounding, 8);
525                  interpolate8x8_avg2(dst+8*stride, halfpel_h+stride+8*stride, halfpel_hv+8*stride, stride, rounding);                  interpolate8x8_avg2(dst+8*stride, halfpel_h+stride+8*stride, halfpel_hv+8*stride, stride, rounding, 8);
526                  interpolate8x8_avg2(dst+8*stride+8, halfpel_h+stride+8*stride+8, halfpel_hv+8*stride+8, stride, rounding);                  interpolate8x8_avg2(dst+8*stride+8, halfpel_h+stride+8*stride+8, halfpel_hv+8*stride+8, stride, rounding, 8);
527                  break;                  break;
528    
529          case 15:          case 15:
530                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);
531                  interpolate8x8_avg2(halfpel_v, src+1, halfpel_h, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src+1, halfpel_h, stride, rounding, 9);
532                  interpolate8x8_avg2(halfpel_v+8, src+1 + 8, halfpel_h+8, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8, src+1 + 8, halfpel_h+8, stride, rounding, 9);
533                  interpolate8x8_avg2(halfpel_v+8*stride, src+1 + 8*stride, halfpel_h+8*stride, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8*stride, src+1 + 8*stride, halfpel_h+8*stride, stride, rounding, 9);
534                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+1+8*stride+8, halfpel_h+8*stride+8, stride, rounding);                  interpolate8x8_avg2(halfpel_v+8*stride+8, src+1+8*stride+8, halfpel_h+8*stride+8, stride, rounding, 9);
535    
536                  interpolate16x16_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);                  interpolate16x16_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
537                  interpolate8x8_avg2(dst, halfpel_hv, halfpel_v+stride, stride, rounding);                  interpolate8x8_avg2(dst, halfpel_hv, halfpel_v+stride, stride, rounding, 8);
538                  interpolate8x8_avg2(dst+8, halfpel_hv+8, halfpel_v+stride+8, stride, rounding);                  interpolate8x8_avg2(dst+8, halfpel_hv+8, halfpel_v+stride+8, stride, rounding, 8);
539                  interpolate8x8_avg2(dst+8*stride, halfpel_hv+8*stride, halfpel_v+stride+8*stride, stride, rounding);                  interpolate8x8_avg2(dst+8*stride, halfpel_hv+8*stride, halfpel_v+stride+8*stride, stride, rounding, 8);
540                  interpolate8x8_avg2(dst+8*stride+8, halfpel_hv+8*stride+8, halfpel_v+stride+8*stride+8, stride, rounding);                  interpolate8x8_avg2(dst+8*stride+8, halfpel_hv+8*stride+8, halfpel_v+stride+8*stride+8, stride, rounding, 8);
541                  break;                  break;
542          }          }
543  }  }
544    
545  #endif  #endif

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

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