ref: fe85fabbac668b2426ce56387906b34539edbf64
parent: 3e1d14a6ce812dece1f50800c2a29431b25822b7
author: Jingning Han <jingning@google.com>
date: Fri Feb 27 10:37:18 EST 2015
Fix source frame border extension This commit fixes an issue in source frame border extension. It causes certain frame resolution such as 640x480 to have a portion of the right/bottom extension filled by zeros, which misleads motion search and degrades transform coding performance when large block size is used. This fix improves the speed 2 compression performance of a few yt sequence, typically ranging from 1% - 2%, up to 5% at median to low bit-rate. Change-Id: Id6b09a5695d9e7651c6dfbc2c6a72288b08af7fb
--- a/vp9/encoder/vp9_extend.c
+++ b/vp9/encoder/vp9_extend.c
@@ -110,9 +110,9 @@
// Motion estimation may use src block variance with the block size up
// to 64x64, so the right and bottom need to be extended to 64 multiple
// or up to 16, whichever is greater.
- const int eb_y = MAX(src->y_width + 16, ALIGN_POWER_OF_TWO(src->y_width, 6))
+ const int er_y = MAX(src->y_width + 16, ALIGN_POWER_OF_TWO(src->y_width, 6))
- src->y_crop_width;
- const int er_y = MAX(src->y_height + 16, ALIGN_POWER_OF_TWO(src->y_height, 6))
+ const int eb_y = MAX(src->y_height + 16, ALIGN_POWER_OF_TWO(src->y_height, 6))
- src->y_crop_height;
const int uv_width_subsampling = (src->uv_width != src->y_width);
const int uv_height_subsampling = (src->uv_height != src->y_height);