void vp8_yv12_extend_frame_borders_c(YV12_BUFFER_CONFIG *ybf) { const int uv_border = ybf->border / 2; assert(ybf->border % 2 == 0); assert(ybf->y_height - ybf->y_crop_height < 16); assert(ybf->y_width - ybf->y_crop_width < 16); assert(ybf->y_height - ybf->y_crop_height >= 0); assert(ybf->y_width - ybf->y_crop_width >= 0); #if CONFIG_VP9_HIGHBITDEPTH if (ybf->flags & YV12_FLAG_HIGHBITDEPTH) { extend_plane_high( ybf->y_buffer, ybf->y_stride, ybf->y_crop_width, ybf->y_crop_height, ybf->border, ybf->border, ybf->border + ybf->y_height - ybf->y_crop_height, ybf->border + ybf->y_width - ybf->y_crop_width); extend_plane_high( ybf->u_buffer, ybf->uv_stride, ybf->uv_crop_width, ybf->uv_crop_height, uv_border, uv_border, uv_border + ybf->uv_height - ybf->uv_crop_height, uv_border + ybf->uv_width - ybf->uv_crop_width); extend_plane_high( ybf->v_buffer, ybf->uv_stride, ybf->uv_crop_width, ybf->uv_crop_height, uv_border, uv_border, uv_border + ybf->uv_height - ybf->uv_crop_height, uv_border + ybf->uv_width - ybf->uv_crop_width); return; } #endif extend_plane(ybf->y_buffer, ybf->y_stride, ybf->y_crop_width, ybf->y_crop_height, ybf->border, ybf->border, ybf->border + ybf->y_height - ybf->y_crop_height, ybf->border + ybf->y_width - ybf->y_crop_width); extend_plane(ybf->u_buffer, ybf->uv_stride, ybf->uv_crop_width, ybf->uv_crop_height, uv_border, uv_border, uv_border + ybf->uv_height - ybf->uv_crop_height, uv_border + ybf->uv_width - ybf->uv_crop_width); extend_plane(ybf->v_buffer, ybf->uv_stride, ybf->uv_crop_width, ybf->uv_crop_height, uv_border, uv_border, uv_border + ybf->uv_height - ybf->uv_crop_height, uv_border + ybf->uv_width - ybf->uv_crop_width); }
static void extend_frame(YV12_BUFFER_CONFIG *const ybf, int ext_size, const int num_planes) { const int ss_x = ybf->uv_width < ybf->y_width; const int ss_y = ybf->uv_height < ybf->y_height; assert(ybf->y_height - ybf->y_crop_height < 16); assert(ybf->y_width - ybf->y_crop_width < 16); assert(ybf->y_height - ybf->y_crop_height >= 0); assert(ybf->y_width - ybf->y_crop_width >= 0); if (ybf->flags & YV12_FLAG_HIGHBITDEPTH) { for (int plane = 0; plane < num_planes; ++plane) { const int is_uv = plane > 0; const int top = ext_size >> (is_uv ? ss_y : 0); const int left = ext_size >> (is_uv ? ss_x : 0); const int bottom = top + ybf->heights[is_uv] - ybf->crop_heights[is_uv]; const int right = left + ybf->widths[is_uv] - ybf->crop_widths[is_uv]; extend_plane_high(ybf->buffers[plane], ybf->strides[is_uv], ybf->crop_widths[is_uv], ybf->crop_heights[is_uv], top, left, bottom, right); } return; } for (int plane = 0; plane < num_planes; ++plane) { const int is_uv = plane > 0; const int top = ext_size >> (is_uv ? ss_y : 0); const int left = ext_size >> (is_uv ? ss_x : 0); const int bottom = top + ybf->heights[is_uv] - ybf->crop_heights[is_uv]; const int right = left + ybf->widths[is_uv] - ybf->crop_widths[is_uv]; extend_plane(ybf->buffers[plane], ybf->strides[is_uv], ybf->crop_widths[is_uv], ybf->crop_heights[is_uv], top, left, bottom, right); } }
void aom_yv12_extend_frame_borders_c(YV12_BUFFER_CONFIG *ybf, const int num_planes) { assert(ybf->border % 2 == 0); assert(ybf->y_height - ybf->y_crop_height < 16); assert(ybf->y_width - ybf->y_crop_width < 16); assert(ybf->y_height - ybf->y_crop_height >= 0); assert(ybf->y_width - ybf->y_crop_width >= 0); if (ybf->flags & YV12_FLAG_HIGHBITDEPTH) { for (int plane = 0; plane < num_planes; ++plane) { const int is_uv = plane > 0; const int plane_border = ybf->border >> is_uv; extend_plane_high( ybf->buffers[plane], ybf->strides[is_uv], ybf->crop_widths[is_uv], ybf->crop_heights[is_uv], plane_border, plane_border, plane_border + ybf->heights[is_uv] - ybf->crop_heights[is_uv], plane_border + ybf->widths[is_uv] - ybf->crop_widths[is_uv]); } return; } for (int plane = 0; plane < num_planes; ++plane) { const int is_uv = plane > 0; const int plane_border = ybf->border >> is_uv; extend_plane(ybf->buffers[plane], ybf->strides[is_uv], ybf->crop_widths[is_uv], ybf->crop_heights[is_uv], plane_border, plane_border, plane_border + ybf->heights[is_uv] - ybf->crop_heights[is_uv], plane_border + ybf->widths[is_uv] - ybf->crop_widths[is_uv]); } }
static void extend_frame(YV12_BUFFER_CONFIG *const ybf, int ext_size) { const int c_w = ybf->uv_crop_width; const int c_h = ybf->uv_crop_height; const int ss_x = ybf->uv_width < ybf->y_width; const int ss_y = ybf->uv_height < ybf->y_height; const int c_et = ext_size >> ss_y; const int c_el = ext_size >> ss_x; const int c_eb = c_et + ybf->uv_height - ybf->uv_crop_height; const int c_er = c_el + ybf->uv_width - ybf->uv_crop_width; assert(ybf->y_height - ybf->y_crop_height < 16); assert(ybf->y_width - ybf->y_crop_width < 16); assert(ybf->y_height - ybf->y_crop_height >= 0); assert(ybf->y_width - ybf->y_crop_width >= 0); #if CONFIG_VP9_HIGHBITDEPTH if (ybf->flags & YV12_FLAG_HIGHBITDEPTH) { extend_plane_high(ybf->y_buffer, ybf->y_stride, ybf->y_crop_width, ybf->y_crop_height, ext_size, ext_size, ext_size + ybf->y_height - ybf->y_crop_height, ext_size + ybf->y_width - ybf->y_crop_width); extend_plane_high(ybf->u_buffer, ybf->uv_stride, c_w, c_h, c_et, c_el, c_eb, c_er); extend_plane_high(ybf->v_buffer, ybf->uv_stride, c_w, c_h, c_et, c_el, c_eb, c_er); return; } #endif extend_plane(ybf->y_buffer, ybf->y_stride, ybf->y_crop_width, ybf->y_crop_height, ext_size, ext_size, ext_size + ybf->y_height - ybf->y_crop_height, ext_size + ybf->y_width - ybf->y_crop_width); extend_plane(ybf->u_buffer, ybf->uv_stride, c_w, c_h, c_et, c_el, c_eb, c_er); extend_plane(ybf->v_buffer, ybf->uv_stride, c_w, c_h, c_et, c_el, c_eb, c_er); }
void aom_extend_frame_borders_y_c(YV12_BUFFER_CONFIG *ybf) { int ext_size = ybf->border; assert(ybf->y_height - ybf->y_crop_height < 16); assert(ybf->y_width - ybf->y_crop_width < 16); assert(ybf->y_height - ybf->y_crop_height >= 0); assert(ybf->y_width - ybf->y_crop_width >= 0); if (ybf->flags & YV12_FLAG_HIGHBITDEPTH) { extend_plane_high(ybf->y_buffer, ybf->y_stride, ybf->y_crop_width, ybf->y_crop_height, ext_size, ext_size, ext_size + ybf->y_height - ybf->y_crop_height, ext_size + ybf->y_width - ybf->y_crop_width); return; } extend_plane(ybf->y_buffer, ybf->y_stride, ybf->y_crop_width, ybf->y_crop_height, ext_size, ext_size, ext_size + ybf->y_height - ybf->y_crop_height, ext_size + ybf->y_width - ybf->y_crop_width); }