diff --git a/vpx_scale/generic/yv12extend.c b/vpx_scale/generic/yv12extend.c index 7b43eece2..614602a03 100644 --- a/vpx_scale/generic/yv12extend.c +++ b/vpx_scale/generic/yv12extend.c @@ -84,11 +84,12 @@ void vp8_yv12_extend_frame_borders_c(YV12_BUFFER_CONFIG *ybf) { 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 c_ext_size = ext_size >> 1; - const int c_et = c_ext_size; - const int c_el = c_ext_size; - const int c_eb = c_ext_size + ybf->uv_height - ybf->uv_crop_height; - const int c_er = c_ext_size + ybf->uv_width - ybf->uv_crop_width; + 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); diff --git a/vpx_scale/mips/dspr2/yv12extend_dspr2.c b/vpx_scale/mips/dspr2/yv12extend_dspr2.c index 26558b0c5..0dfc47cc8 100644 --- a/vpx_scale/mips/dspr2/yv12extend_dspr2.c +++ b/vpx_scale/mips/dspr2/yv12extend_dspr2.c @@ -104,16 +104,15 @@ static void extend_plane(uint8_t *const src, int src_stride, } } -static void extend_frame(YV12_BUFFER_CONFIG *const ybf, - int subsampling_x, int subsampling_y, - int ext_size) { +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 c_ext_size = ext_size >> 1; - const int c_et = c_ext_size; - const int c_el = c_ext_size; - const int c_eb = c_ext_size + ybf->uv_height - ybf->uv_crop_height; - const int c_er = c_ext_size + ybf->uv_width - ybf->uv_crop_width; + 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); @@ -133,16 +132,13 @@ static void extend_frame(YV12_BUFFER_CONFIG *const ybf, c_w, c_h, c_et, c_el, c_eb, c_er); } -void vp9_extend_frame_borders_dspr2(YV12_BUFFER_CONFIG *ybf, - int subsampling_x, int subsampling_y) { - extend_frame(ybf, subsampling_x, subsampling_y, ybf->border); +void vp9_extend_frame_borders_dspr2(YV12_BUFFER_CONFIG *ybf) { + extend_frame(ybf, ybf->border); } -void vp9_extend_frame_inner_borders_dspr2(YV12_BUFFER_CONFIG *ybf, - int subsampling_x, - int subsampling_y) { +void vp9_extend_frame_inner_borders_dspr2(YV12_BUFFER_CONFIG *ybf) { const int inner_bw = (ybf->border > VP9INNERBORDERINPIXELS) ? VP9INNERBORDERINPIXELS : ybf->border; - extend_frame(ybf, subsampling_x, subsampling_y, inner_bw); + extend_frame(ybf, inner_bw); } #endif