[cvs] / xvidcore / src / image / interpolate8x8.c Repository:
ViewVC logotype

Diff of /xvidcore/src/image/interpolate8x8.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.14, Sun Aug 29 05:32:29 2004 UTC revision 1.15, Tue Sep 13 12:12:15 2005 UTC
# Line 32  Line 32 
32  INTERPOLATE8X8_PTR interpolate8x8_halfpel_v;  INTERPOLATE8X8_PTR interpolate8x8_halfpel_v;
33  INTERPOLATE8X8_PTR interpolate8x8_halfpel_hv;  INTERPOLATE8X8_PTR interpolate8x8_halfpel_hv;
34    
35    INTERPOLATE8X8_PTR interpolate8x4_halfpel_h;
36    INTERPOLATE8X8_PTR interpolate8x4_halfpel_v;
37    INTERPOLATE8X8_PTR interpolate8x4_halfpel_hv;
38    
39  INTERPOLATE8X8_PTR interpolate8x8_halfpel_add;  INTERPOLATE8X8_PTR interpolate8x8_halfpel_add;
40  INTERPOLATE8X8_PTR interpolate8x8_halfpel_h_add;  INTERPOLATE8X8_PTR interpolate8x8_halfpel_h_add;
41  INTERPOLATE8X8_PTR interpolate8x8_halfpel_v_add;  INTERPOLATE8X8_PTR interpolate8x8_halfpel_v_add;
42  INTERPOLATE8X8_PTR interpolate8x8_halfpel_hv_add;  INTERPOLATE8X8_PTR interpolate8x8_halfpel_hv_add;
43    
   
44  INTERPOLATE8X8_AVG2_PTR interpolate8x8_avg2;  INTERPOLATE8X8_AVG2_PTR interpolate8x8_avg2;
45  INTERPOLATE8X8_AVG4_PTR interpolate8x8_avg4;  INTERPOLATE8X8_AVG4_PTR interpolate8x8_avg4;
46    
# Line 139  Line 142 
142          }          }
143  }  }
144    
145    /* dst = interpolate(src) */
146    
147    void
148    interpolate8x4_halfpel_h_c(uint8_t * const dst,
149                                                       const uint8_t * const src,
150                                                       const uint32_t stride,
151                                                       const uint32_t rounding)
152    {
153            uintptr_t j;
154    
155            if (rounding) {
156                    for (j = 0; j < 4*stride; j+=stride) {
157                                    dst[j + 0] = (uint8_t)((src[j + 0] + src[j + 1] )>>1);
158                                    dst[j + 1] = (uint8_t)((src[j + 1] + src[j + 2] )>>1);
159                                    dst[j + 2] = (uint8_t)((src[j + 2] + src[j + 3] )>>1);
160                                    dst[j + 3] = (uint8_t)((src[j + 3] + src[j + 4] )>>1);
161                                    dst[j + 4] = (uint8_t)((src[j + 4] + src[j + 5] )>>1);
162                                    dst[j + 5] = (uint8_t)((src[j + 5] + src[j + 6] )>>1);
163                                    dst[j + 6] = (uint8_t)((src[j + 6] + src[j + 7] )>>1);
164                                    dst[j + 7] = (uint8_t)((src[j + 7] + src[j + 8] )>>1);
165                    }
166            } else {
167                    for (j = 0; j < 4*stride; j+=stride) {
168                                    dst[j + 0] = (uint8_t)((src[j + 0] + src[j + 1] + 1)>>1);
169                                    dst[j + 1] = (uint8_t)((src[j + 1] + src[j + 2] + 1)>>1);
170                                    dst[j + 2] = (uint8_t)((src[j + 2] + src[j + 3] + 1)>>1);
171                                    dst[j + 3] = (uint8_t)((src[j + 3] + src[j + 4] + 1)>>1);
172                                    dst[j + 4] = (uint8_t)((src[j + 4] + src[j + 5] + 1)>>1);
173                                    dst[j + 5] = (uint8_t)((src[j + 5] + src[j + 6] + 1)>>1);
174                                    dst[j + 6] = (uint8_t)((src[j + 6] + src[j + 7] + 1)>>1);
175                                    dst[j + 7] = (uint8_t)((src[j + 7] + src[j + 8] + 1)>>1);
176                    }
177            }
178    }
179    
180  /* dst = (dst + interpolate(src)/2 */  /* dst = (dst + interpolate(src)/2 */
181    
182  void  void
# Line 210  Line 248 
248          }          }
249  }  }
250    
251    /* dst = interpolate(src) */
252    
253    void
254    interpolate8x4_halfpel_v_c(uint8_t * const dst,
255                                                       const uint8_t * const src,
256                                                       const uint32_t stride,
257                                                       const uint32_t rounding)
258    {
259            uintptr_t j;
260    
261    
262            if (rounding) {
263                    for (j = 0; j < 4*stride; j+=stride) {
264                                    dst[j + 0] = (uint8_t)((src[j + 0] + src[j + stride + 0] )>>1);
265                                    dst[j + 1] = (uint8_t)((src[j + 1] + src[j + stride + 1] )>>1);
266                                    dst[j + 2] = (uint8_t)((src[j + 2] + src[j + stride + 2] )>>1);
267                                    dst[j + 3] = (uint8_t)((src[j + 3] + src[j + stride + 3] )>>1);
268                                    dst[j + 4] = (uint8_t)((src[j + 4] + src[j + stride + 4] )>>1);
269                                    dst[j + 5] = (uint8_t)((src[j + 5] + src[j + stride + 5] )>>1);
270                                    dst[j + 6] = (uint8_t)((src[j + 6] + src[j + stride + 6] )>>1);
271                                    dst[j + 7] = (uint8_t)((src[j + 7] + src[j + stride + 7] )>>1);
272                    }
273            } else {
274                    for (j = 0; j < 4*stride; j+=stride) {
275                                    dst[j + 0] = (uint8_t)((src[j + 0] + src[j + stride + 0] + 1)>>1);
276                                    dst[j + 1] = (uint8_t)((src[j + 1] + src[j + stride + 1] + 1)>>1);
277                                    dst[j + 2] = (uint8_t)((src[j + 2] + src[j + stride + 2] + 1)>>1);
278                                    dst[j + 3] = (uint8_t)((src[j + 3] + src[j + stride + 3] + 1)>>1);
279                                    dst[j + 4] = (uint8_t)((src[j + 4] + src[j + stride + 4] + 1)>>1);
280                                    dst[j + 5] = (uint8_t)((src[j + 5] + src[j + stride + 5] + 1)>>1);
281                                    dst[j + 6] = (uint8_t)((src[j + 6] + src[j + stride + 6] + 1)>>1);
282                                    dst[j + 7] = (uint8_t)((src[j + 7] + src[j + stride + 7] + 1)>>1);
283                    }
284            }
285    }
286    
287  /* dst = (dst + interpolate(src))/2 */  /* dst = (dst + interpolate(src))/2 */
288    
289  void  void
# Line 281  Line 355 
355          }          }
356  }  }
357    
358    /* dst = interpolate(src) */
359    
360    void
361    interpolate8x4_halfpel_hv_c(uint8_t * const dst,
362                                                            const uint8_t * const src,
363                                                            const uint32_t stride,
364                                                            const uint32_t rounding)
365    {
366            uintptr_t j;
367    
368            if (rounding) {
369                    for (j = 0; j < 4*stride; j+=stride) {
370                                    dst[j + 0] = (uint8_t)((src[j+0] + src[j+1] + src[j+stride+0] + src[j+stride+1] +1)>>2);
371                                    dst[j + 1] = (uint8_t)((src[j+1] + src[j+2] + src[j+stride+1] + src[j+stride+2] +1)>>2);
372                                    dst[j + 2] = (uint8_t)((src[j+2] + src[j+3] + src[j+stride+2] + src[j+stride+3] +1)>>2);
373                                    dst[j + 3] = (uint8_t)((src[j+3] + src[j+4] + src[j+stride+3] + src[j+stride+4] +1)>>2);
374                                    dst[j + 4] = (uint8_t)((src[j+4] + src[j+5] + src[j+stride+4] + src[j+stride+5] +1)>>2);
375                                    dst[j + 5] = (uint8_t)((src[j+5] + src[j+6] + src[j+stride+5] + src[j+stride+6] +1)>>2);
376                                    dst[j + 6] = (uint8_t)((src[j+6] + src[j+7] + src[j+stride+6] + src[j+stride+7] +1)>>2);
377                                    dst[j + 7] = (uint8_t)((src[j+7] + src[j+8] + src[j+stride+7] + src[j+stride+8] +1)>>2);
378                    }
379            } else {
380                    for (j = 0; j < 4*stride; j+=stride) {
381                                    dst[j + 0] = (uint8_t)((src[j+0] + src[j+1] + src[j+stride+0] + src[j+stride+1] +2)>>2);
382                                    dst[j + 1] = (uint8_t)((src[j+1] + src[j+2] + src[j+stride+1] + src[j+stride+2] +2)>>2);
383                                    dst[j + 2] = (uint8_t)((src[j+2] + src[j+3] + src[j+stride+2] + src[j+stride+3] +2)>>2);
384                                    dst[j + 3] = (uint8_t)((src[j+3] + src[j+4] + src[j+stride+3] + src[j+stride+4] +2)>>2);
385                                    dst[j + 4] = (uint8_t)((src[j+4] + src[j+5] + src[j+stride+4] + src[j+stride+5] +2)>>2);
386                                    dst[j + 5] = (uint8_t)((src[j+5] + src[j+6] + src[j+stride+5] + src[j+stride+6] +2)>>2);
387                                    dst[j + 6] = (uint8_t)((src[j+6] + src[j+7] + src[j+stride+6] + src[j+stride+7] +2)>>2);
388                                    dst[j + 7] = (uint8_t)((src[j+7] + src[j+8] + src[j+stride+7] + src[j+stride+8] +2)>>2);
389                    }
390            }
391    }
392    
393  /* dst = (interpolate(src) + dst)/2 */  /* dst = (interpolate(src) + dst)/2 */
394    
395  void  void

Legend:
Removed from v.1.14  
changed lines
  Added in v.1.15

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