261 |
} |
} |
262 |
} |
} |
263 |
|
|
264 |
// bframe encoding requires image-based u,v interpolation |
|
265 |
|
// image-based y,u,v interpolation |
266 |
void |
void |
267 |
image_interpolate(const IMAGE * refn, |
image_interpolate(const IMAGE * refn, |
268 |
IMAGE * refh, |
IMAGE * refh, |
275 |
const uint32_t offset = EDGE_SIZE * (edged_width + 1); |
const uint32_t offset = EDGE_SIZE * (edged_width + 1); |
276 |
const uint32_t stride_add = 7 * edged_width; |
const uint32_t stride_add = 7 * edged_width; |
277 |
|
|
278 |
#ifdef BFRAMES |
/* --- u,v-image-based interpolation --- |
279 |
const uint32_t edged_width2 = edged_width / 2; |
const uint32_t edged_width2 = edged_width / 2; |
280 |
const uint32_t edged_height2 = edged_height / 2; |
const uint32_t edged_height2 = edged_height / 2; |
281 |
const uint32_t offset2 = EDGE_SIZE2 * (edged_width2 + 1); |
const uint32_t offset2 = EDGE_SIZE2 * (edged_width2 + 1); |
282 |
const uint32_t stride_add2 = 7 * edged_width2; |
const uint32_t stride_add2 = 7 * edged_width2; |
283 |
#endif |
*/ |
284 |
|
|
285 |
uint8_t *n_ptr, *h_ptr, *v_ptr, *hv_ptr; |
uint8_t *n_ptr, *h_ptr, *v_ptr, *hv_ptr; |
286 |
uint32_t x, y; |
uint32_t x, y; |
313 |
n_ptr += stride_add; |
n_ptr += stride_add; |
314 |
} |
} |
315 |
|
|
316 |
#ifdef BFRAMES |
/* --- u,v-image-based interpolation --- |
317 |
n_ptr = refn->u; |
n_ptr = refn->u; |
318 |
h_ptr = refh->u; |
h_ptr = refh->u; |
319 |
v_ptr = refv->u; |
v_ptr = refv->u; |
367 |
hv_ptr += stride_add2; |
hv_ptr += stride_add2; |
368 |
n_ptr += stride_add2; |
n_ptr += stride_add2; |
369 |
} |
} |
|
#endif |
|
|
|
|
|
/* |
|
|
interpolate_halfpel_h( |
|
|
refh->y - offset, |
|
|
refn->y - offset, |
|
|
edged_width, edged_height, |
|
|
rounding); |
|
|
|
|
|
interpolate_halfpel_v( |
|
|
refv->y - offset, |
|
|
refn->y - offset, |
|
|
edged_width, edged_height, |
|
|
rounding); |
|
|
|
|
|
interpolate_halfpel_hv( |
|
|
refhv->y - offset, |
|
|
refn->y - offset, |
|
|
edged_width, edged_height, |
|
|
rounding); |
|
|
*/ |
|
|
|
|
|
/* uv-image-based compensation |
|
|
offset = EDGE_SIZE2 * (edged_width / 2 + 1); |
|
|
|
|
|
interpolate_halfpel_h( |
|
|
refh->u - offset, |
|
|
refn->u - offset, |
|
|
edged_width / 2, edged_height / 2, |
|
|
rounding); |
|
|
|
|
|
interpolate_halfpel_v( |
|
|
refv->u - offset, |
|
|
refn->u - offset, |
|
|
edged_width / 2, edged_height / 2, |
|
|
rounding); |
|
|
|
|
|
interpolate_halfpel_hv( |
|
|
refhv->u - offset, |
|
|
refn->u - offset, |
|
|
edged_width / 2, edged_height / 2, |
|
|
rounding); |
|
|
|
|
|
|
|
|
interpolate_halfpel_h( |
|
|
refh->v - offset, |
|
|
refn->v - offset, |
|
|
edged_width / 2, edged_height / 2, |
|
|
rounding); |
|
|
|
|
|
interpolate_halfpel_v( |
|
|
refv->v - offset, |
|
|
refn->v - offset, |
|
|
edged_width / 2, edged_height / 2, |
|
|
rounding); |
|
|
|
|
|
interpolate_halfpel_hv( |
|
|
refhv->v - offset, |
|
|
refn->v - offset, |
|
|
edged_width / 2, edged_height / 2, |
|
|
rounding); |
|
370 |
*/ |
*/ |
371 |
} |
} |
372 |
|
|