ref: ed29c2f94599d2a0eb31ba2c6595bb3d514bbaea
parent: 43be86dbffb1dec280f63d0c5b7c7a51fc48dd0d
author: Ronald S. Bultje <[email protected]>
date: Tue Sep 8 05:57:30 EDT 2015
vp10: fix 4:2:2 chroma MVs for 8x4/4x4 blocks. In vp9, the bottom MV would be the average of the topright and bottomleft luma MV (instead of the bottomleft/bottomright luma MV). See issue 993. Change-Id: Ic91c0b195950e7b32fc26c84c04788a09321e391
--- a/vp10/common/reconinter.c
+++ b/vp10/common/reconinter.c
@@ -143,11 +143,11 @@
const int bh = 4 * num_4x4_h;
if (xd->mi[0]->mbmi.sb_type < BLOCK_8X8) {
- int i = 0, x, y;
+ int x, y;
assert(bsize == BLOCK_8X8);
for (y = 0; y < num_4x4_h; ++y)
for (x = 0; x < num_4x4_w; ++x)
- build_inter_predictors(xd, plane, i++, bw, bh,
+ build_inter_predictors(xd, plane, y * 2 + x, bw, bh,
4 * x, 4 * y, 4, 4, mi_x, mi_y);
} else {
build_inter_predictors(xd, plane, 0, bw, bh,
--- a/vp10/decoder/decodeframe.c
+++ b/vp10/decoder/decodeframe.c
@@ -707,10 +707,10 @@
const int is_scaled = vp10_is_scaled(sf);
if (sb_type < BLOCK_8X8) {
- int i = 0, x, y;
+ int x, y;
for (y = 0; y < num_4x4_h; ++y) {
for (x = 0; x < num_4x4_w; ++x) {
- const MV mv = average_split_mvs(pd, mi, ref, i++);
+ const MV mv = average_split_mvs(pd, mi, ref, y * 2 + x);
dec_build_inter_predictors(pbi, xd, plane, n4w_x4, n4h_x4,
4 * x, 4 * y, 4, 4, mi_x, mi_y, kernel,
sf, pre_buf, dst_buf, &mv,