diff options
author | Xiang, Haihao <haihao.xiang@intel.com> | 2010-04-19 13:31:23 +0800 |
---|---|---|
committer | Xiang, Haihao <haihao.xiang@intel.com> | 2010-04-19 13:31:23 +0800 |
commit | 7d5877d542a3256e64d106caa791f9af0d701142 (patch) | |
tree | d3913f590f925fd2f636692a8cfc5102a45913e1 | |
parent | 21b718316b33522d1761fc3bb15b5cef31860bd9 (diff) | |
download | libva-7d5877d542a3256e64d106caa791f9af0d701142.tar.gz |
i965_drv_video: [H.264] fix weight 128 issue
-rw-r--r-- | i965_drv_video/i965_avc_bsd.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/i965_drv_video/i965_avc_bsd.c b/i965_drv_video/i965_avc_bsd.c index 157bf16..d00fe7d 100644 --- a/i965_drv_video/i965_avc_bsd.c +++ b/i965_drv_video/i965_avc_bsd.c @@ -263,16 +263,17 @@ i965_avc_bsd_slice_state(VADriverContextP ctx, cmd_len += 16; } - if (pic_param->pic_fields.bits.weighted_pred_flag == 1 || - pic_param->pic_fields.bits.weighted_bipred_idc == 1) { + if ((slice_param->slice_type == SLICE_TYPE_P || + slice_param->slice_type == SLICE_TYPE_SP) && + (pic_param->pic_fields.bits.weighted_pred_flag == 1)) { present_flag |= PRESENT_WEIGHT_OFFSET_L0; cmd_len += 48; } - if (pic_param->pic_fields.bits.weighted_bipred_idc == 1) { - present_flag |= PRESENT_WEIGHT_OFFSET_L1; - cmd_len += 48; - assert(slice_param->slice_type == SLICE_TYPE_B); + if ((slice_param->slice_type == SLICE_TYPE_B) && + (pic_param->pic_fields.bits.weighted_bipred_idc == 1)) { + present_flag |= PRESENT_WEIGHT_OFFSET_L0 | PRESENT_WEIGHT_OFFSET_L1; + cmd_len += 96; } BEGIN_BCS_BATCH(ctx, cmd_len); @@ -346,7 +347,8 @@ i965_avc_bsd_slice_state(VADriverContextP ctx, weightoffsets[j * 6 + 4] = slice_param->chroma_offset_l0[j][1]; weightoffsets[j * 6 + 5] = slice_param->chroma_weight_l0[j][1]; - if (pic_param->pic_fields.bits.weighted_bipred_idc == 1) { + if (pic_param->pic_fields.bits.weighted_pred_flag == 1 || + pic_param->pic_fields.bits.weighted_bipred_idc == 1) { if (i965_h264_context->use_hw_w128) { if (slice_param->luma_weight_l0[j] == 128) i965_h264_context->weight128_luma_l0 |= (1 << j); |