[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.2, Sat Oct 5 21:30:50 2002 UTC revision 1.5.2.7, Wed Nov 20 20:11:49 2002 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 25  Line 26 
26                                                                          const uint32_t rounding);                                                                          const uint32_t rounding);
27  typedef INTERPOLATE8X8_AVG4 *INTERPOLATE8X8_AVG4_PTR;  typedef INTERPOLATE8X8_AVG4 *INTERPOLATE8X8_AVG4_PTR;
28    
29  typedef void (INTERPOLATE8X8_LOWPASS) (uint8_t *dst,  typedef void (INTERPOLATE_LOWPASS) (uint8_t *dst,
30                                                                             uint8_t *src,                                                                             uint8_t *src,
31                                                                             int32_t stride,                                                                             int32_t stride,
32                                                                             int32_t rounding);                                                                             int32_t rounding);
33    
34  typedef INTERPOLATE8X8_LOWPASS *INTERPOLATE8X8_LOWPASS_PTR;  typedef INTERPOLATE_LOWPASS *INTERPOLATE_LOWPASS_PTR;
35    
36  typedef void (INTERPOLATE8X8_LOWPASS_HV) (uint8_t *dst1,  typedef void (INTERPOLATE_LOWPASS_HV) (uint8_t *dst1,
37                                                                                    uint8_t *dst2,                                                                                    uint8_t *dst2,
38                                                                                    uint8_t *src,                                                                                    uint8_t *src,
39                                                                                    int32_t stride,                                                                                    int32_t stride,
40                                                                                    int32_t rounding);                                                                                    int32_t rounding);
41    
42  typedef INTERPOLATE8X8_LOWPASS_HV *INTERPOLATE8X8_LOWPASS_HV_PTR;  typedef INTERPOLATE_LOWPASS_HV *INTERPOLATE_LOWPASS_HV_PTR;
43    
44  typedef void (INTERPOLATE8X8_6TAP_LOWPASS) (uint8_t *dst,  typedef void (INTERPOLATE8X8_6TAP_LOWPASS) (uint8_t *dst,
45                                                                                  uint8_t *src,                                                                                  uint8_t *src,
# Line 54  Line 55 
55  extern INTERPOLATE8X8_AVG2_PTR interpolate8x8_avg2;  extern INTERPOLATE8X8_AVG2_PTR interpolate8x8_avg2;
56  extern INTERPOLATE8X8_AVG4_PTR interpolate8x8_avg4;  extern INTERPOLATE8X8_AVG4_PTR interpolate8x8_avg4;
57    
58  extern INTERPOLATE8X8_LOWPASS_PTR interpolate8x8_lowpass_h;  extern INTERPOLATE_LOWPASS_PTR interpolate8x8_lowpass_h;
59  extern INTERPOLATE8X8_LOWPASS_PTR interpolate8x8_lowpass_v;  extern INTERPOLATE_LOWPASS_PTR interpolate8x8_lowpass_v;
60    
61    extern INTERPOLATE_LOWPASS_PTR interpolate16x16_lowpass_h;
62    extern INTERPOLATE_LOWPASS_PTR interpolate16x16_lowpass_v;
63    
64  extern INTERPOLATE8X8_LOWPASS_HV_PTR interpolate8x8_lowpass_hv;  extern INTERPOLATE_LOWPASS_HV_PTR interpolate8x8_lowpass_hv;
65    extern INTERPOLATE_LOWPASS_HV_PTR interpolate16x16_lowpass_hv;
66    
67  extern INTERPOLATE8X8_6TAP_LOWPASS_PTR interpolate8x8_6tap_lowpass_h;  extern INTERPOLATE8X8_6TAP_LOWPASS_PTR interpolate8x8_6tap_lowpass_h;
68  extern INTERPOLATE8X8_6TAP_LOWPASS_PTR interpolate8x8_6tap_lowpass_v;  extern INTERPOLATE8X8_6TAP_LOWPASS_PTR interpolate8x8_6tap_lowpass_v;
# Line 88  Line 93 
93  INTERPOLATE8X8_AVG2 interpolate8x8_avg2_mmx;  INTERPOLATE8X8_AVG2 interpolate8x8_avg2_mmx;
94  INTERPOLATE8X8_AVG4 interpolate8x8_avg4_mmx;  INTERPOLATE8X8_AVG4 interpolate8x8_avg4_mmx;
95    
96  INTERPOLATE8X8_LOWPASS interpolate8x8_lowpass_h_c;  INTERPOLATE_LOWPASS interpolate8x8_lowpass_h_c;
97  INTERPOLATE8X8_LOWPASS interpolate8x8_lowpass_v_c;  INTERPOLATE_LOWPASS interpolate8x8_lowpass_v_c;
98  INTERPOLATE8X8_LOWPASS_HV interpolate8x8_lowpass_hv_c;  
99    INTERPOLATE_LOWPASS interpolate16x16_lowpass_h_c;
100    INTERPOLATE_LOWPASS interpolate16x16_lowpass_v_c;
101    
102    INTERPOLATE_LOWPASS_HV interpolate8x8_lowpass_hv_c;
103    INTERPOLATE_LOWPASS_HV interpolate16x16_lowpass_hv_c;
104    
105  INTERPOLATE8X8_6TAP_LOWPASS interpolate8x8_6tap_lowpass_h_c;  INTERPOLATE8X8_6TAP_LOWPASS interpolate8x8_6tap_lowpass_h_c;
106  INTERPOLATE8X8_6TAP_LOWPASS interpolate8x8_6tap_lowpass_v_c;  INTERPOLATE8X8_6TAP_LOWPASS interpolate8x8_6tap_lowpass_v_c;
# Line 189  Line 199 
199          return buffer;          return buffer;
200  }  }
201    
   
202  static __inline void interpolate8x8_quarterpel(uint8_t * const cur,  static __inline void interpolate8x8_quarterpel(uint8_t * const cur,
203                                       uint8_t * const refn,                                       uint8_t * const refn,
204                                           uint8_t * const refh,                                           uint8_t * const refh,
# Line 234  Line 243 
243    
244          case 1:          case 1:
245                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
246                  interpolate8x8_avg2(dst, src, halfpel_h, stride, rounding);                  interpolate8x8_avg2(dst, src, halfpel_h, stride, rounding, 8);
247                  break;                  break;
248    
249          case 2:          case 2:
# Line 243  Line 252 
252    
253          case 3:          case 3:
254                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
255                  interpolate8x8_avg2(dst, src + 1, halfpel_h, stride, rounding);                  interpolate8x8_avg2(dst, src + 1, halfpel_h, stride, rounding, 8);
256                  break;                  break;
257    
258          case 4:          case 4:
259                  interpolate8x8_lowpass_v(halfpel_v, src, stride, rounding);                  interpolate8x8_lowpass_v(halfpel_v, src, stride, rounding);
260                  interpolate8x8_avg2(dst, src, halfpel_v, stride, rounding);                  interpolate8x8_avg2(dst, src, halfpel_v, stride, rounding, 8);
261                  break;                  break;
262    
263          case 5:          case 5:
264                  interpolate8x8_lowpass_v(halfpel_v, src, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
265                  interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding, 9);
266                  interpolate8x8_avg4(dst, src, halfpel_h, halfpel_v, halfpel_hv, stride, rounding);                  interpolate8x8_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
267                    interpolate8x8_avg2(dst, halfpel_v, halfpel_hv, stride, rounding, 8);
268                  break;                  break;
269    
270          case 6:          case 6:
271                  interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);
272                  interpolate8x8_avg2(dst, halfpel_h, halfpel_hv, stride, rounding);                  interpolate8x8_avg2(dst, halfpel_h, halfpel_hv, stride, rounding, 8);
273                  break;                  break;
274    
275          case 7:          case 7:
276                  interpolate8x8_lowpass_v(halfpel_v, src+1, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
277                  interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src + 1, halfpel_h, stride, rounding, 9);
278                  interpolate8x8_avg4(dst, src+1, halfpel_h, halfpel_v, halfpel_hv, stride, rounding);                  interpolate8x8_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
279                    interpolate8x8_avg2(dst, halfpel_v, halfpel_hv, stride, rounding, 8);
280                  break;                  break;
281    
282          case 8:          case 8:
# Line 273  Line 284 
284                  break;                  break;
285    
286          case 9:          case 9:
287                  interpolate8x8_lowpass_v(halfpel_v, src, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
288                  interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding, 9);
289                  interpolate8x8_avg2(dst, halfpel_v, halfpel_hv, stride, rounding);                  interpolate8x8_lowpass_v(dst, halfpel_v, stride, rounding);
290                  break;                  break;
291    
292          case 10:          case 10:
# Line 283  Line 294 
294                  break;                  break;
295    
296          case 11:          case 11:
297                  interpolate8x8_lowpass_v(halfpel_v, src+1, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
298                  interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src + 1, halfpel_h, stride, rounding, 9);
299                  interpolate8x8_avg2(dst, halfpel_v, halfpel_hv, stride, rounding);                  interpolate8x8_lowpass_v(dst, halfpel_v, stride, rounding);
300                  break;                  break;
301    
302          case 12:          case 12:
303                  interpolate8x8_lowpass_v(halfpel_v, src, stride, rounding);                  interpolate8x8_lowpass_v(halfpel_v, src, stride, rounding);
304                  interpolate8x8_avg2(dst, src+stride, halfpel_v, stride, rounding);                  interpolate8x8_avg2(dst, src+stride, halfpel_v, stride, rounding, 8);
305                  break;                  break;
306    
307          case 13:          case 13:
308                  interpolate8x8_lowpass_v(halfpel_v, src, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
309                  interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding, 9);
310                  interpolate8x8_avg4(dst, src+stride, halfpel_h+stride, halfpel_v, halfpel_hv, stride, rounding);                  interpolate8x8_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
311                    interpolate8x8_avg2(dst, halfpel_v+stride, halfpel_hv, stride, rounding, 8);
312                  break;                  break;
313    
314          case 14:          case 14:
315                  interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);
316                  interpolate8x8_avg2(dst, halfpel_h+stride, halfpel_hv, stride, rounding);                  interpolate8x8_avg2(dst, halfpel_h+stride, halfpel_hv, stride, rounding, 8);
317                  break;                  break;
318    
319          case 15:          case 15:
320                  interpolate8x8_lowpass_v(halfpel_v, src+1, stride, rounding);                  interpolate8x8_lowpass_h(halfpel_h, src, stride, rounding);
321                  interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);                  interpolate8x8_avg2(halfpel_v, src + 1, halfpel_h, stride, rounding, 9);
322                  interpolate8x8_avg4(dst, src+stride+1, halfpel_h+stride, halfpel_v, halfpel_hv, stride, rounding);                  interpolate8x8_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
323                    interpolate8x8_avg2(dst, halfpel_hv, halfpel_v + stride, stride, rounding, 8);
324                  break;                  break;
325          }          }
326  }  }
327    
328    static __inline void interpolate16x16_quarterpel(uint8_t * const cur,
329                                         uint8_t * const refn,
330                                             uint8_t * const refh,
331                                             uint8_t * const refv,
332                                             uint8_t * const refhv,
333                                         const uint32_t x, const uint32_t y,
334                                             const int32_t dx,  const int dy,
335                                             const uint32_t stride,
336                                             const uint32_t rounding)
337    {
338            const int32_t xRef = x*4 + dx;
339            const int32_t yRef = y*4 + dy;
340    
341            uint8_t *src, *dst;
342            uint8_t *halfpel_h, *halfpel_v, *halfpel_hv;
343            int32_t x_int, y_int, x_frac, y_frac;
344    
345            x_int = xRef/4;
346            if (xRef < 0 && xRef % 4)
347                    x_int--;
348    
349            x_frac = xRef - (4*x_int);
350    
351            y_int  = yRef/4;
352            if (yRef < 0 && yRef % 4)
353                    y_int--;
354    
355            y_frac = yRef - (4*y_int);
356    
357            src = refn + y_int * stride + x_int;
358            halfpel_h = refh;
359            halfpel_v = refv;
360            halfpel_hv = refhv;
361    
362            dst = cur + y * stride + x;
363    
364            switch((y_frac << 2) | (x_frac)) {
365    
366            case 0:
367                    transfer8x8_copy(dst, src, stride);
368                    transfer8x8_copy(dst+8, src+8, stride);
369                    transfer8x8_copy(dst+8*stride, src+8*stride, stride);
370                    transfer8x8_copy(dst+8*stride+8, src+8*stride+8, stride);
371                    break;
372    
373            case 1:
374                    interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);
375                    interpolate8x8_avg2(dst, src, halfpel_h, stride, rounding, 8);
376                    interpolate8x8_avg2(dst+8, src+8, halfpel_h+8, stride, rounding, 8);
377                    interpolate8x8_avg2(dst+8*stride, src+8*stride, halfpel_h+8*stride, stride, rounding, 8);
378                    interpolate8x8_avg2(dst+8*stride+8, src+8*stride+8, halfpel_h+8*stride+8, stride, rounding, 8);
379                    break;
380    
381            case 2:
382                interpolate16x16_lowpass_h(dst, src, stride, rounding);
383                    break;
384    
385            case 3:
386                    interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);
387                    interpolate8x8_avg2(dst, src + 1, halfpel_h, stride, rounding, 8);
388                    interpolate8x8_avg2(dst+8, src + 8 + 1, halfpel_h+8, stride, rounding, 8);
389                    interpolate8x8_avg2(dst+8*stride, src + 8*stride + 1, halfpel_h+8*stride, stride, rounding, 8);
390                    interpolate8x8_avg2(dst+8*stride+8, src+8*stride+8 + 1, halfpel_h+8*stride+8, stride, rounding, 8);
391                    break;
392    
393            case 4:
394                    interpolate16x16_lowpass_v(halfpel_v, src, stride, rounding);
395                    interpolate8x8_avg2(dst, src, halfpel_v, stride, rounding, 8);
396                    interpolate8x8_avg2(dst+8, src+8, halfpel_v+8, stride, rounding, 8);
397                    interpolate8x8_avg2(dst+8*stride, src+8*stride, halfpel_v+8*stride, stride, rounding, 8);
398                    interpolate8x8_avg2(dst+8*stride+8, src+8*stride+8, halfpel_v+8*stride+8, stride, rounding, 8);
399                    break;
400    
401            case 5:
402                    interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);
403                    interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding, 9);
404                    interpolate8x8_avg2(halfpel_v+8, src + 8, halfpel_h+8, stride, rounding, 9);
405                    interpolate8x8_avg2(halfpel_v+8*stride, src + 8*stride, halfpel_h+8*stride, stride, rounding, 9);
406                    interpolate8x8_avg2(halfpel_v+8*stride+8, src+8*stride+8, halfpel_h+8*stride+8, stride, rounding, 9);
407    
408                    interpolate16x16_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
409                    interpolate8x8_avg2(dst, halfpel_hv, halfpel_v, stride, rounding, 8);
410                    interpolate8x8_avg2(dst+8, halfpel_hv+8, halfpel_v+8, stride, rounding, 8);
411                    interpolate8x8_avg2(dst+8*stride, halfpel_hv+8*stride, halfpel_v+8*stride, stride, rounding, 8);
412                    interpolate8x8_avg2(dst+8*stride+8, halfpel_hv+8*stride+8, halfpel_v+8*stride+8, stride, rounding, 8);
413                    break;
414    
415            case 6:
416                    interpolate16x16_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);
417                    interpolate8x8_avg2(dst, halfpel_h, halfpel_hv, stride, rounding, 8);
418                    interpolate8x8_avg2(dst+8, halfpel_h+8, halfpel_hv+8, stride, rounding, 8);
419                    interpolate8x8_avg2(dst+8*stride, halfpel_h+8*stride, halfpel_hv+8*stride, stride, rounding, 8);
420                    interpolate8x8_avg2(dst+8*stride+8, halfpel_h+8*stride+8, halfpel_hv+8*stride+8, stride, rounding, 8);
421                    break;
422    
423            case 7:
424                    interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);
425                    interpolate8x8_avg2(halfpel_v, src+1, halfpel_h, stride, rounding, 9);
426                    interpolate8x8_avg2(halfpel_v+8, src+1 + 8, halfpel_h+8, stride, rounding, 9);
427                    interpolate8x8_avg2(halfpel_v+8*stride, src+1 + 8*stride, halfpel_h+8*stride, stride, rounding, 9);
428                    interpolate8x8_avg2(halfpel_v+8*stride+8, src+1+8*stride+8, halfpel_h+8*stride+8, stride, rounding, 9);
429    
430                    interpolate16x16_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
431                    interpolate8x8_avg2(dst, halfpel_hv, halfpel_v, stride, rounding, 8);
432                    interpolate8x8_avg2(dst+8, halfpel_hv+8, halfpel_v+8, stride, rounding, 8);
433                    interpolate8x8_avg2(dst+8*stride, halfpel_hv+8*stride, halfpel_v+8*stride, stride, rounding, 8);
434                    interpolate8x8_avg2(dst+8*stride+8, halfpel_hv+8*stride+8, halfpel_v+8*stride+8, stride, rounding, 8);
435                    break;
436    
437            case 8:
438                interpolate16x16_lowpass_v(dst, src, stride, rounding);
439                    break;
440    
441            case 9:
442                    interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);
443                    interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding, 9);
444                    interpolate8x8_avg2(halfpel_v+8, src + 8, halfpel_h+8, stride, rounding, 9);
445                    interpolate8x8_avg2(halfpel_v+8*stride, src + 8*stride, halfpel_h+8*stride, stride, rounding, 9);
446                    interpolate8x8_avg2(halfpel_v+8*stride+8, src+8*stride+8, halfpel_h+8*stride+8, stride, rounding, 9);
447                    interpolate16x16_lowpass_v(dst, halfpel_v, stride, rounding);
448                    break;
449    
450            case 10:
451                    interpolate16x16_lowpass_hv(dst, halfpel_h, src, stride, rounding);
452                    break;
453    
454            case 11:
455                    interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);
456                    interpolate8x8_avg2(halfpel_v, src+1, halfpel_h, stride, rounding, 9);
457                    interpolate8x8_avg2(halfpel_v+8, src+1 + 8, halfpel_h+8, stride, rounding, 9);
458                    interpolate8x8_avg2(halfpel_v+8*stride, src+1 + 8*stride, halfpel_h+8*stride, stride, rounding, 9);
459                    interpolate8x8_avg2(halfpel_v+8*stride+8, src+1+8*stride+8, halfpel_h+8*stride+8, stride, rounding, 9);
460                    interpolate16x16_lowpass_v(dst, halfpel_v, stride, rounding);
461                    break;
462    
463            case 12:
464                    interpolate16x16_lowpass_v(halfpel_v, src, stride, rounding);
465                    interpolate8x8_avg2(dst, src+stride, halfpel_v, stride, rounding, 8);
466                    interpolate8x8_avg2(dst+8, src+stride+8, halfpel_v+8, stride, rounding, 8);
467                    interpolate8x8_avg2(dst+8*stride, src+stride+8*stride, halfpel_v+8*stride, stride, rounding, 8);
468                    interpolate8x8_avg2(dst+8*stride+8, src+stride+8*stride+8, halfpel_v+8*stride+8, stride, rounding, 8);
469                    break;
470    
471            case 13:
472                    interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);
473                    interpolate8x8_avg2(halfpel_v, src, halfpel_h, stride, rounding, 9);
474                    interpolate8x8_avg2(halfpel_v+8, src + 8, halfpel_h+8, stride, rounding, 9);
475                    interpolate8x8_avg2(halfpel_v+8*stride, src + 8*stride, halfpel_h+8*stride, stride, rounding, 9);
476                    interpolate8x8_avg2(halfpel_v+8*stride+8, src+8*stride+8, halfpel_h+8*stride+8, stride, rounding, 9);
477    
478                    interpolate16x16_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
479                    interpolate8x8_avg2(dst, halfpel_hv, halfpel_v+stride, stride, rounding, 8);
480                    interpolate8x8_avg2(dst+8, halfpel_hv+8, halfpel_v+stride+8, stride, rounding, 8);
481                    interpolate8x8_avg2(dst+8*stride, halfpel_hv+8*stride, halfpel_v+stride+8*stride, stride, rounding, 8);
482                    interpolate8x8_avg2(dst+8*stride+8, halfpel_hv+8*stride+8, halfpel_v+stride+8*stride+8, stride, rounding, 8);
483                    break;
484    
485            case 14:
486                    interpolate16x16_lowpass_hv(halfpel_hv, halfpel_h, src, stride, rounding);
487                    interpolate8x8_avg2(dst, halfpel_h+stride, halfpel_hv, stride, rounding, 8);
488                    interpolate8x8_avg2(dst+8, halfpel_h+stride+8, halfpel_hv+8, stride, rounding, 8);
489                    interpolate8x8_avg2(dst+8*stride, halfpel_h+stride+8*stride, halfpel_hv+8*stride, stride, rounding, 8);
490                    interpolate8x8_avg2(dst+8*stride+8, halfpel_h+stride+8*stride+8, halfpel_hv+8*stride+8, stride, rounding, 8);
491                    break;
492    
493            case 15:
494                    interpolate16x16_lowpass_h(halfpel_h, src, stride, rounding);
495                    interpolate8x8_avg2(halfpel_v, src+1, halfpel_h, stride, rounding, 9);
496                    interpolate8x8_avg2(halfpel_v+8, src+1 + 8, halfpel_h+8, stride, rounding, 9);
497                    interpolate8x8_avg2(halfpel_v+8*stride, src+1 + 8*stride, halfpel_h+8*stride, stride, rounding, 9);
498                    interpolate8x8_avg2(halfpel_v+8*stride+8, src+1+8*stride+8, halfpel_h+8*stride+8, stride, rounding, 9);
499    
500                    interpolate16x16_lowpass_v(halfpel_hv, halfpel_v, stride, rounding);
501                    interpolate8x8_avg2(dst, halfpel_hv, halfpel_v+stride, stride, rounding, 8);
502                    interpolate8x8_avg2(dst+8, halfpel_hv+8, halfpel_v+stride+8, stride, rounding, 8);
503                    interpolate8x8_avg2(dst+8*stride, halfpel_hv+8*stride, halfpel_v+stride+8*stride, stride, rounding, 8);
504                    interpolate8x8_avg2(dst+8*stride+8, halfpel_hv+8*stride+8, halfpel_v+stride+8*stride+8, stride, rounding, 8);
505                    break;
506            }
507    }
508  #endif  #endif

Legend:
Removed from v.1.5.2.2  
changed lines
  Added in v.1.5.2.7

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