[Libva] [Libva-intel-driver PATCH 24/27] HEVC: Submit HCP_WEIGHTOFFSET_STATE if required
Xiang, Haihao
haihao.xiang at intel.com
Wed Nov 19 07:05:39 PST 2014
Signed-off-by: Xiang, Haihao <haihao.xiang at intel.com>
---
src/gen9_mfd.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/src/gen9_mfd.c b/src/gen9_mfd.c
index 78f1837..03ae052 100644
--- a/src/gen9_mfd.c
+++ b/src/gen9_mfd.c
@@ -672,14 +672,21 @@ gen9_hcpd_weightoffset_state_1(struct intel_batchbuffer *batch,
static void
gen9_hcpd_weightoffset_state(VADriverContextP ctx,
- VASliceParameterBufferHEVC *slice_param,
- struct gen9_hcpd_context *gen9_hcpd_context)
+ VAPictureParameterBufferHEVC *pic_param,
+ VASliceParameterBufferHEVC *slice_param,
+ struct gen9_hcpd_context *gen9_hcpd_context)
{
struct intel_batchbuffer *batch = gen9_hcpd_context->base.batch;
if (slice_param->LongSliceFlags.fields.slice_type == HEVC_SLICE_I)
return;
+ if ((slice_param->LongSliceFlags.fields.slice_type == HEVC_SLICE_P &&
+ !pic_param->pic_fields.bits.weighted_pred_flag) ||
+ (slice_param->LongSliceFlags.fields.slice_type == HEVC_SLICE_B &&
+ !pic_param->pic_fields.bits.weighted_bipred_flag))
+ return;
+
gen9_hcpd_weightoffset_state_1(batch, 0, slice_param);
if (slice_param->LongSliceFlags.fields.slice_type == HEVC_SLICE_P)
@@ -899,7 +906,7 @@ gen9_hcpd_hevc_decode_picture(VADriverContextP ctx,
gen9_hcpd_slice_state(ctx, pic_param, slice_param, next_slice_param, gen9_hcpd_context);
gen9_hcpd_ref_idx_state(ctx, pic_param, slice_param, gen9_hcpd_context);
- gen9_hcpd_weightoffset_state(ctx, slice_param, gen9_hcpd_context);
+ gen9_hcpd_weightoffset_state(ctx, pic_param, slice_param, gen9_hcpd_context);
gen9_hcpd_bsd_object(ctx, slice_param, gen9_hcpd_context);
slice_param++;
}
--
1.9.1
More information about the Libva
mailing list