[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.7, Wed Nov 20 20:11:49 2002 UTC revision 1.10.2.1, Mon Jun 9 01:20:59 2003 UTC
# Line 83  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 120  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 155  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 167  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 364  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:
# Line 505  Line 541 
541                  break;                  break;
542          }          }
543  }  }
544    
545  #endif  #endif

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

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