[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.8, Tue Nov 26 23:44:10 2002 UTC revision 1.9, Tue Feb 11 21:56:31 2003 UTC
# Line 86  Line 86 
86  INTERPOLATE8X8 interpolate8x8_halfpel_v_ia64;  INTERPOLATE8X8 interpolate8x8_halfpel_v_ia64;
87  INTERPOLATE8X8 interpolate8x8_halfpel_hv_ia64;  INTERPOLATE8X8 interpolate8x8_halfpel_hv_ia64;
88    
 void interpolate8x8_lowpass_h(uint8_t *dst, uint8_t *src, int32_t dst_stride, int32_t src_stride, int32_t rounding);  
 void interpolate8x8_lowpass_v(uint8_t *dst, uint8_t *src, int32_t dst_stride, int32_t src_stride, int32_t rounding);  
 void interpolate8x8_lowpass_hv(uint8_t *dst1, uint8_t *dst2, uint8_t *src, int32_t dst1_stride, int32_t dst2_stride, int32_t src_stride, int32_t rounding);  
 void interpolate8x8_bilinear2(uint8_t *dst, uint8_t *src1, uint8_t *src2, int32_t dst_stride, int32_t src_stride, int32_t rounding);  
 void interpolate8x8_bilinear4(uint8_t *dst, uint8_t *src1, uint8_t *src2, uint8_t *src3, uint8_t *src4, int32_t stride, int32_t rounding);  
   
89  void interpolate8x8_c(uint8_t * const dst,  void interpolate8x8_c(uint8_t * const dst,
90                                            const uint8_t * const src,                                            const uint8_t * const src,
91                                            const uint32_t x,                                            const uint32_t x,
# Line 145  Line 139 
139          }          }
140  }  }
141    
   
 static __inline void interpolate8x8_quarterpel(uint8_t * const cur,  
                                      uint8_t * const refn,  
                                      const uint32_t x, const uint32_t y,  
                                          const int32_t dx,  const int dy,  
                                          const uint32_t stride,  
                                          const uint32_t rounding)  
 {  
         const int32_t xRef = x*4 + dx;  
         const int32_t yRef = y*4 + dy;  
   
         uint8_t *src, *dst;  
         int32_t x_int, y_int, x_frac, y_frac;  
   
         uint8_t halfpel_h[72];  
         uint8_t halfpel_v[64];  
         uint8_t halfpel_hv[64];  
   
         x_int = xRef/4;  
         if (xRef < 0 && xRef % 4)  
                 x_int--;  
   
         x_frac = xRef - (4*x_int);  
   
         y_int  = yRef/4;  
         if (yRef < 0 && yRef % 4)  
                 y_int--;  
   
         y_frac = yRef - (4*y_int);  
   
         src = refn + y_int * stride + x_int;  
         dst = cur + y * stride + x;  
   
         switch((y_frac << 2) | (x_frac)) {  
   
         case 0:  
                 transfer8x8_copy(dst, src, stride);  
                 break;  
   
         case 1:  
                 interpolate8x8_lowpass_h(halfpel_h, src, 8, stride, rounding);  
                 interpolate8x8_bilinear2(dst, src, halfpel_h, stride, stride, rounding);  
                 break;  
   
         case 2:  
             interpolate8x8_lowpass_h(dst, src, stride, stride, rounding);  
                 break;  
   
         case 3:  
                 interpolate8x8_lowpass_h(halfpel_h, src, 8, stride, rounding);  
                 interpolate8x8_bilinear2(dst, src+1, halfpel_h, stride, stride, rounding);  
                 break;  
   
         case 4:  
                 interpolate8x8_lowpass_v(halfpel_v, src, 8, stride, rounding);  
                 interpolate8x8_bilinear2(dst, src, halfpel_v, stride, stride, rounding);  
                 break;  
   
         case 5:  
                 interpolate8x8_lowpass_v(halfpel_v, src, 8, stride, rounding);  
                 interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, 8, 8, stride, rounding);  
                 interpolate8x8_bilinear4(dst, src, halfpel_h, halfpel_v, halfpel_hv, stride, rounding);  
                 break;  
   
         case 6:  
                 interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, 8, 8, stride, rounding);  
                 interpolate8x8_bilinear2(dst, halfpel_h, halfpel_hv, stride, 8, 1-rounding);  
                 break;  
   
         case 7:  
                 interpolate8x8_lowpass_v(halfpel_v, src+1, 8, stride, 16-rounding);  
                 interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, 8, 8, stride, rounding);  
                 interpolate8x8_bilinear4(dst, src+1, halfpel_h, halfpel_v, halfpel_hv, stride, rounding);  
                 break;  
   
         case 8:  
             interpolate8x8_lowpass_v(dst, src, stride, stride, rounding);  
                 break;  
   
         case 9:  
                 interpolate8x8_lowpass_v(halfpel_v, src, 8, stride, 16-rounding);  
                 interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, 8, 8, stride, rounding);  
                 interpolate8x8_bilinear2(dst, halfpel_v, halfpel_hv, stride, 8, rounding);  
                 break;  
   
         case 10:  
                 interpolate8x8_lowpass_hv(dst, halfpel_h, src, stride, 8, stride, rounding);  
                 break;  
   
         case 11:  
                 interpolate8x8_lowpass_v(halfpel_v, src+1, 8, stride, 16-rounding);  
                 interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, 8, 8, stride, rounding);  
                 interpolate8x8_bilinear2(dst, halfpel_v, halfpel_hv, stride, 8, rounding);  
                 break;  
   
         case 12:  
                 interpolate8x8_lowpass_v(halfpel_v, src, 8, stride, rounding);  
                 interpolate8x8_bilinear2(dst, src+stride, halfpel_v, stride, stride, rounding);  
                 break;  
   
         case 13:  
                 interpolate8x8_lowpass_v(halfpel_v, src, 8, stride, rounding);  
                 interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, 8, 8, stride, rounding);  
                 interpolate8x8_bilinear4(dst, src+stride, halfpel_h+8, halfpel_v, halfpel_hv, stride, rounding);  
                 break;  
   
         case 14:  
                 interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, 8, 8, stride, rounding);  
                 interpolate8x8_bilinear2(dst, halfpel_h+8, halfpel_hv, stride, 8, rounding);  
                 break;  
   
         case 15:  
                 interpolate8x8_lowpass_v(halfpel_v, src+1, 8, stride, rounding);  
                 interpolate8x8_lowpass_hv(halfpel_hv, halfpel_h, src, 8, 8, stride, rounding);  
                 interpolate8x8_bilinear4(dst, src+stride+1, halfpel_h+8, halfpel_v, halfpel_hv, stride, rounding);  
                 break;  
         }  
 }  

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.9

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