From 7cb4663c575a02a7a908693253a660f451de77c8 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: (cherry picked from commit bef6007c3aa40eee069250bd796e72f6d8a82341) --- 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 f0ecf1c7683..e61deb20648 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 2ace9477335..0d498fdadf7 100644 --- a/src/gallium/include/pipe/p_video_state.h +++ b/src/gallium/include/pipe/p_video_state.h @@ -764,6 +764,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 {