From f13c5fe53efd2ca12b9cd85d97e80c4e627123d3 Mon Sep 17 00:00:00 2001 From: David Rosca Date: Mon, 30 Dec 2024 19:31:33 +0100 Subject: [PATCH] radeonsi/vce: Support intra refresh Reviewed-by: David (Ming Qiang) Wu Reviewed-by: Ruijing Dong Acked-by: Leo Liu Part-of: --- src/gallium/drivers/radeonsi/radeon_vce_52.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/gallium/drivers/radeonsi/radeon_vce_52.c b/src/gallium/drivers/radeonsi/radeon_vce_52.c index 96786bc52f3..a7c22932c15 100644 --- a/src/gallium/drivers/radeonsi/radeon_vce_52.c +++ b/src/gallium/drivers/radeonsi/radeon_vce_52.c @@ -21,6 +21,8 @@ #define REF_LIST_MODIFICATION_OP_LONG_TERM 2 #define REF_LIST_MODIFICATION_OP_VIEW_ADD 3 +#define INTRAREFRESH_METHOD_BAR_BASED 6 + static void get_rate_control_param(struct rvce_encoder *enc, struct pipe_h264_enc_picture_desc *pic) { enc->enc_pic.rc.rc_method = pic->rate_ctrl[0].rate_ctrl_method; @@ -260,6 +262,13 @@ static void get_param(struct rvce_encoder *enc, struct pipe_h264_enc_picture_des enc->enc_pic.ec.enc_vbaq_mode = pic->rate_ctrl[0].rate_ctrl_method != PIPE_H2645_ENC_RATE_CONTROL_METHOD_DISABLE && pic->quality_modes.vbaq_mode; + if (pic->intra_refresh.mode != PIPE_VIDEO_ENC_INTRA_REFRESH_NONE) { + enc->enc_pic.eo.enable_intra_refresh = 1; + enc->enc_pic.pc.enc_force_intra_refresh = INTRAREFRESH_METHOD_BAR_BASED; + enc->enc_pic.pc.enc_intra_refresh_num_mbs_per_slot = pic->intra_refresh.region_size; + } else { + enc->enc_pic.eo.enable_intra_refresh = 0; + } enc->enc_pic.eo.insert_headers = 0; enc->enc_pic.eo.insert_aud = 0;