[Libva] [PATCH] VP8 HWEnc: Fix vp8 mv incorrectly stored issue
Zhong Li
zhong.li at intel.com
Sun May 3 22:12:25 PDT 2015
As vp8 spec, all luma motion vectors are doubled stored.
This patch has much benefit to P frame qualtity.
Signed-off-by: Zhong Li <zhong.li at intel.com>
---
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
More information about the Libva
mailing list