vp8: fix loop filter for bitexact reconstruction.
authorGwenole Beauchesne <gb.devel@gmail.com>
Tue, 8 Apr 2014 12:56:03 +0000 (06:56 -0600)
committerXiang, Haihao <haihao.xiang@intel.com>
Wed, 23 Apr 2014 06:21:30 +0000 (14:21 +0800)
Each loop filter delta update value shall be encoded within 7 bits,
including the sign bit and 6-bit magnitude in 2's complement. So,
don't propagate the sign bit while packing the filter level values.

Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
(cherry picked from commit 36ccd9c3e47766edc70ecbdf82acc89ed67e26c4)

src/gen8_mfd.c

index 743fd74..72b2640 100644 (file)
@@ -2938,16 +2938,16 @@ gen8_mfd_vp8_pic_state(VADriverContextP ctx,
     }
 
     OUT_BCS_BATCH(batch,
-                  pic_param->loop_filter_deltas_ref_frame[3] << 24 |
-                  pic_param->loop_filter_deltas_ref_frame[2] << 16 |
-                  pic_param->loop_filter_deltas_ref_frame[1] <<  8 |
-                  pic_param->loop_filter_deltas_ref_frame[0] <<  0);
+                  (pic_param->loop_filter_deltas_ref_frame[3] & 0x7f) << 24 |
+                  (pic_param->loop_filter_deltas_ref_frame[2] & 0x7f) << 16 |
+                  (pic_param->loop_filter_deltas_ref_frame[1] & 0x7f) <<  8 |
+                  (pic_param->loop_filter_deltas_ref_frame[0] & 0x7f) <<  0);
 
     OUT_BCS_BATCH(batch,
-                  pic_param->loop_filter_deltas_mode[3] << 24 |
-                  pic_param->loop_filter_deltas_mode[2] << 16 |
-                  pic_param->loop_filter_deltas_mode[1] <<  8 |
-                  pic_param->loop_filter_deltas_mode[0] <<  0);
+                  (pic_param->loop_filter_deltas_mode[3] & 0x7f) << 24 |
+                  (pic_param->loop_filter_deltas_mode[2] & 0x7f) << 16 |
+                  (pic_param->loop_filter_deltas_mode[1] & 0x7f) <<  8 |
+                  (pic_param->loop_filter_deltas_mode[0] & 0x7f) <<  0);
 
     /* segmentation id stream base address, DW35-DW37 */
     OUT_BCS_BATCH(batch, 0);