From: carpalis Date: Sat, 28 Oct 2017 13:21:39 +0000 (+0200) Subject: genX_mfd: fix intensity compensation for frame-interlaced content X-Git-Tag: android-x86-8.1-r1~141 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=7ff0e522cbed516974942c73879343811dc7ae0d;p=android-x86%2Fhardware-intel-common-vaapi.git genX_mfd: fix intensity compensation for frame-interlaced content When frame-interlaced pictures are signalled to be intensity compensated, we need to set the hardware to compensating both the top and the bottom field. Signed-off-by: Jerome Borsboom --- diff --git a/src/gen75_mfd.c b/src/gen75_mfd.c index bac7904..4d6b1d3 100644 --- a/src/gen75_mfd.c +++ b/src/gen75_mfd.c @@ -2231,7 +2231,7 @@ gen75_mfd_vc1_pred_pipe_state(VADriverContextP ctx, } if (pic_param->sequence_fields.bits.interlace && - pic_param->picture_fields.bits.frame_coding_mode == 2) { /* Field-Interlace */ + pic_param->picture_fields.bits.frame_coding_mode > 0) { /* Frame-Interlace or Field-Interlace */ if (gen7_mfd_context->reference_surface[2].surface_id != VA_INVALID_ID) gen7_vc1_bottom_surface = (struct gen7_vc1_surface *)(gen7_mfd_context->reference_surface[2].obj_surface->private_data); else @@ -2263,7 +2263,7 @@ gen75_mfd_vc1_pred_pipe_state(VADriverContextP ctx, } if (pic_param->sequence_fields.bits.interlace && - pic_param->picture_fields.bits.frame_coding_mode == 2) { /* Field-Interlace */ + pic_param->picture_fields.bits.frame_coding_mode > 0) { /* Frame-Interlace or Field-Interlace */ if (gen7_mfd_context->reference_surface[3].surface_id != VA_INVALID_ID) gen7_vc1_bottom_surface = (struct gen7_vc1_surface *)(gen7_mfd_context->reference_surface[3].obj_surface->private_data); else diff --git a/src/gen7_mfd.c b/src/gen7_mfd.c index d3f12a9..9d3e208 100644 --- a/src/gen7_mfd.c +++ b/src/gen7_mfd.c @@ -1965,7 +1965,7 @@ gen7_mfd_vc1_pred_pipe_state(VADriverContextP ctx, } if (pic_param->sequence_fields.bits.interlace && - pic_param->picture_fields.bits.frame_coding_mode == 2) { /* Field-Interlace */ + pic_param->picture_fields.bits.frame_coding_mode > 0) { /* Frame-Interlace or Field-Interlace */ if (gen7_mfd_context->reference_surface[2].surface_id != VA_INVALID_ID) gen7_vc1_bottom_surface = (struct gen7_vc1_surface *)(gen7_mfd_context->reference_surface[2].obj_surface->private_data); else @@ -1997,7 +1997,7 @@ gen7_mfd_vc1_pred_pipe_state(VADriverContextP ctx, } if (pic_param->sequence_fields.bits.interlace && - pic_param->picture_fields.bits.frame_coding_mode == 2) { /* Field-Interlace */ + pic_param->picture_fields.bits.frame_coding_mode > 0) { /* Frame-Interlace or Field-Interlace */ if (gen7_mfd_context->reference_surface[3].surface_id != VA_INVALID_ID) gen7_vc1_bottom_surface = (struct gen7_vc1_surface *)(gen7_mfd_context->reference_surface[3].obj_surface->private_data); else diff --git a/src/gen8_mfd.c b/src/gen8_mfd.c index 3d1c922..a0a6e59 100644 --- a/src/gen8_mfd.c +++ b/src/gen8_mfd.c @@ -2010,7 +2010,7 @@ gen8_mfd_vc1_pred_pipe_state(VADriverContextP ctx, } if (pic_param->sequence_fields.bits.interlace && - pic_param->picture_fields.bits.frame_coding_mode == 2) { /* Field-Interlace */ + pic_param->picture_fields.bits.frame_coding_mode > 0) { /* Frame-Interlace or Field-Interlace */ if (gen7_mfd_context->reference_surface[2].surface_id != VA_INVALID_ID) gen7_vc1_bottom_surface = (struct gen7_vc1_surface *)(gen7_mfd_context->reference_surface[2].obj_surface->private_data); else @@ -2042,7 +2042,7 @@ gen8_mfd_vc1_pred_pipe_state(VADriverContextP ctx, } if (pic_param->sequence_fields.bits.interlace && - pic_param->picture_fields.bits.frame_coding_mode == 2) { /* Field-Interlace */ + pic_param->picture_fields.bits.frame_coding_mode > 0) { /* Frame-Interlace or Field-Interlace */ if (gen7_mfd_context->reference_surface[3].surface_id != VA_INVALID_ID) gen7_vc1_bottom_surface = (struct gen7_vc1_surface *)(gen7_mfd_context->reference_surface[3].obj_surface->private_data); else