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 |
|
|
56 |
INTERPOLATE8X8_6TAP_LOWPASS_PTR interpolate8x8_6tap_lowpass_h; |
INTERPOLATE8X8_6TAP_LOWPASS_PTR interpolate8x8_6tap_lowpass_h; |
57 |
INTERPOLATE8X8_6TAP_LOWPASS_PTR interpolate8x8_6tap_lowpass_v; |
INTERPOLATE8X8_6TAP_LOWPASS_PTR interpolate8x8_6tap_lowpass_v; |
58 |
|
|
59 |
void __inline |
void |
60 |
interpolate8x8_avg2_c(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, const uint32_t stride, const uint32_t rounding, const uint32_t height) |
interpolate8x8_avg2_c(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, const uint32_t stride, const uint32_t rounding, const uint32_t height) |
61 |
{ |
{ |
62 |
uint32_t i; |
uint32_t i; |
79 |
} |
} |
80 |
|
|
81 |
void |
void |
82 |
interpolate8x8_halfpel_add_c(uint8_t *dst, const uint8_t *src, const uint32_t stride, const uint32_t rounding) |
interpolate8x8_halfpel_add_c(uint8_t * const dst, const uint8_t * const src, const uint32_t stride, const uint32_t rounding) |
83 |
{ |
{ |
84 |
interpolate8x8_avg2_c(dst, dst, src, stride, 0, 8); |
interpolate8x8_avg2_c(dst, dst, src, stride, 0, 8); |
85 |
} |
} |
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 |
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 |
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 |