From bef6007c3aa40eee069250bd796e72f6d8a82341 Mon Sep 17 00:00:00 2001 From: SureshGuttula Date: Fri, 23 Oct 2020 15:55:02 +0530 Subject: [PATCH] gallium: update abs_delta segementation parameter This patch updates segmentation_abs_or_delta_update value based on VP9 bitstream header info. Netflix videos are showing corrupted output when codec is HW vp9 and segemantion enabled.This change will fix the corruption issue. Signed-off-by: SureshGuttula Reviewed-by: Leo Liu Part-of: --- src/gallium/drivers/radeon/radeon_vcn_dec.c | 2 +- src/gallium/frontends/va/picture_vp9.c | 2 +- src/gallium/include/pipe/p_video_state.h | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/radeon/radeon_vcn_dec.c b/src/gallium/drivers/radeon/radeon_vcn_dec.c index 265f3bf5dd0..d33e835263e 100644 --- a/src/gallium/drivers/radeon/radeon_vcn_dec.c +++ b/src/gallium/drivers/radeon/radeon_vcn_dec.c @@ -397,7 +397,7 @@ static rvcn_dec_message_vp9_t get_vp9_msg(struct radeon_decoder *dec, for (i = 0; i < 3; ++i) prbs->seg.pred_probs[i] = pic->picture_parameter.segment_pred_probs[i]; - prbs->seg.abs_delta = 0; + prbs->seg.abs_delta = pic->picture_parameter.abs_delta; } else memset(&prbs->seg, 0, 256); diff --git a/src/gallium/frontends/va/picture_vp9.c b/src/gallium/frontends/va/picture_vp9.c index 8ee7f0107da..f7b52ddf691 100644 --- a/src/gallium/frontends/va/picture_vp9.c +++ b/src/gallium/frontends/va/picture_vp9.c @@ -339,7 +339,7 @@ void vlVaDecoderVP9BitstreamHeader(vlVaContext *context, vlVaBuffer *buf) /* update_data */ if (vp9_u(&vlc, 1)) { /* abs_delta */ - vp9_u(&vlc, 1); + context->desc.vp9.picture_parameter.abs_delta = vp9_u(&vlc, 1); for (i = 0; i < 8; ++i) { /* Use alternate quantizer */ if ((context->desc.vp9.slice_parameter.seg_param[i].alt_quant_enabled = vp9_u(&vlc, 1))) diff --git a/src/gallium/include/pipe/p_video_state.h b/src/gallium/include/pipe/p_video_state.h index 58dc69db103..9b10acd81bf 100644 --- a/src/gallium/include/pipe/p_video_state.h +++ b/src/gallium/include/pipe/p_video_state.h @@ -769,6 +769,7 @@ struct pipe_vp9_picture_desc int8_t y_dc_delta_q; int8_t uv_ac_delta_q; int8_t uv_dc_delta_q; + uint8_t abs_delta; } picture_parameter; struct {