i965_drv_video: [H.264] fix the start of a slice for a MBAFF picture
authorXiang, Haihao <haihao.xiang@intel.com>
Mon, 5 Jul 2010 02:09:54 +0000 (10:09 +0800)
committerXiang, Haihao <haihao.xiang@intel.com>
Wed, 7 Jul 2010 06:54:48 +0000 (14:54 +0800)
i965_drv_video/i965_avc_bsd.c

index 4bad64f..5cc0cec 100644 (file)
@@ -629,11 +629,9 @@ g4x_avc_bsd_object(VADriverContextP ctx,
         else if (slice_type == SLICE_TYPE_B)
             weighted_pred_idc = pic_param->pic_fields.bits.weighted_bipred_idc;
 
-        first_mb_in_slice = slice_param->first_mb_in_slice;
+        first_mb_in_slice = slice_param->first_mb_in_slice << mbaff_picture;
         slice_hor_pos = first_mb_in_slice % width_in_mbs; 
         slice_ver_pos = first_mb_in_slice / width_in_mbs;
-        first_mb_in_slice = (slice_ver_pos << mbaff_picture) * width_in_mbs + slice_hor_pos;
-        slice_hor_pos <<= mbaff_picture;
 
         BEGIN_BCS_BATCH(ctx, cmd_len);
         OUT_BCS_BATCH(ctx, CMD_AVC_BSD_OBJECT | (cmd_len - 2));
@@ -755,11 +753,9 @@ ironlake_avc_bsd_object(VADriverContextP ctx,
         else if (slice_type == SLICE_TYPE_B)
             weighted_pred_idc = pic_param->pic_fields.bits.weighted_bipred_idc;
 
-        first_mb_in_slice = slice_param->first_mb_in_slice;
+        first_mb_in_slice = slice_param->first_mb_in_slice << mbaff_picture;
         slice_hor_pos = first_mb_in_slice % width_in_mbs; 
         slice_ver_pos = first_mb_in_slice / width_in_mbs;
-        first_mb_in_slice = (slice_ver_pos << mbaff_picture) * width_in_mbs + slice_hor_pos;
-        slice_hor_pos <<= mbaff_picture;
 
         BEGIN_BCS_BATCH(ctx, 16);
         OUT_BCS_BATCH(ctx, CMD_AVC_BSD_OBJECT | (16 - 2));