As vp8 spec, all luma motion vectors are doubled stored. This patch has much benefit to P frame qualtity.
Signed-off-by: Zhong Li <[email protected]> --- src/gen8_mfc.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/gen8_mfc.c b/src/gen8_mfc.c index 35d6084..0398323 100644 --- a/src/gen8_mfc.c +++ b/src/gen8_mfc.c @@ -4202,8 +4202,11 @@ gen8_mfc_vp8_pak_object_inter(VADriverContextP ctx, /* only support inter_16x16 now */ assert((msg[AVC_INTER_MSG_OFFSET] & INTER_MODE_MASK) == INTER_16X16); /* for inter_16x16, all 16 MVs should be same, - * and move mv to the vme mb start address to make sure offset is 64 bytes aligned */ - msg[0] = (msg[AVC_INTER_MV_OFFSET/4] & 0xfffefffe); + * and move mv to the vme mb start address to make sure offset is 64 bytes aligned + * as vp8 spec, all vp8 luma motion vectors are doulbled stored + */ + msg[0] = (((msg[AVC_INTER_MV_OFFSET/4] & 0xffff0000) << 1) | ((msg[AVC_INTER_MV_OFFSET/4] << 1) & 0xffff)); + for (i = 1; i < 16; i++) { msg[i] = msg[0]; } -- 1.9.1 _______________________________________________ Libva mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libva
