The width alignment for HEVC encoding should be 64 due to hardware requirement. This will fix conformance_window_flag in SPS.
v2 (Zhang, Boyuan): - add marcos to define width alignment for hevc and h264 Signed-off-by: Lei Zhou <zhou...@kylinos.cn> --- src/gallium/drivers/radeon/radeon_vcn_enc.c | 4 ++-- src/gallium/drivers/radeon/radeon_vcn_enc.h | 3 +++ src/gallium/drivers/radeon/radeon_vcn_enc_1_2.c | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/gallium/drivers/radeon/radeon_vcn_enc.c b/src/gallium/drivers/radeon/radeon_vcn_enc.c index 7d64a28a405..a882bba502c 100644 --- a/src/gallium/drivers/radeon/radeon_vcn_enc.c +++ b/src/gallium/drivers/radeon/radeon_vcn_enc.c @@ -51,7 +51,7 @@ static void radeon_vcn_enc_get_param(struct radeon_encoder *enc, struct pipe_pic enc->enc_pic.not_referenced = pic->not_referenced; enc->enc_pic.is_idr = (pic->picture_type == PIPE_H264_ENC_PICTURE_TYPE_IDR); enc->enc_pic.crop_left = 0; - enc->enc_pic.crop_right = (align(enc->base.width, 16) - enc->base.width) / 2; + enc->enc_pic.crop_right = (align(enc->base.width, RENCODE_H264_WIDTH_ALIGN) - enc->base.width) / 2; enc->enc_pic.crop_top = 0; enc->enc_pic.crop_bottom = (align(enc->base.height, 16) - enc->base.height) / 2; } else if (u_reduce_video_profile(picture->profile) == PIPE_VIDEO_FORMAT_HEVC) { @@ -66,7 +66,7 @@ static void radeon_vcn_enc_get_param(struct radeon_encoder *enc, struct pipe_pic enc->enc_pic.is_idr = (pic->picture_type == PIPE_H265_ENC_PICTURE_TYPE_IDR) || (pic->picture_type == PIPE_H265_ENC_PICTURE_TYPE_I); enc->enc_pic.crop_left = 0; - enc->enc_pic.crop_right = (align(enc->base.width, 16) - enc->base.width) / 2; + enc->enc_pic.crop_right = (align(enc->base.width, RENCODE_HEVC_WIDTH_ALIGN) - enc->base.width) / 2; enc->enc_pic.crop_top = 0; enc->enc_pic.crop_bottom = (align(enc->base.height, 16) - enc->base.height) / 2; enc->enc_pic.general_tier_flag = pic->seq.general_tier_flag; diff --git a/src/gallium/drivers/radeon/radeon_vcn_enc.h b/src/gallium/drivers/radeon/radeon_vcn_enc.h index 04685c69af1..fadc74cc898 100644 --- a/src/gallium/drivers/radeon/radeon_vcn_enc.h +++ b/src/gallium/drivers/radeon/radeon_vcn_enc.h @@ -148,6 +148,9 @@ #define RENCODE_FEEDBACK_BUFFER_MODE_LINEAR 0 #define RENCODE_FEEDBACK_BUFFER_MODE_CIRCULAR 1 +#define RENCODE_H264_WIDTH_ALIGN 16 +#define RENCODE_HEVC_WIDTH_ALIGN 64 + typedef struct rvcn_enc_session_info_s { uint32_t interface_version; diff --git a/src/gallium/drivers/radeon/radeon_vcn_enc_1_2.c b/src/gallium/drivers/radeon/radeon_vcn_enc_1_2.c index 7f5b1909344..388df42909f 100644 --- a/src/gallium/drivers/radeon/radeon_vcn_enc_1_2.c +++ b/src/gallium/drivers/radeon/radeon_vcn_enc_1_2.c @@ -212,7 +212,7 @@ static void radeon_enc_task_info(struct radeon_encoder *enc, bool need_feedback) static void radeon_enc_session_init(struct radeon_encoder *enc) { enc->enc_pic.session_init.encode_standard = RENCODE_ENCODE_STANDARD_H264; - enc->enc_pic.session_init.aligned_picture_width = align(enc->base.width, 16); + enc->enc_pic.session_init.aligned_picture_width = align(enc->base.width, RENCODE_H264_WIDTH_ALIGN); enc->enc_pic.session_init.aligned_picture_height = align(enc->base.height, 16); enc->enc_pic.session_init.padding_width = enc->enc_pic.session_init.aligned_picture_width - enc->base.width; enc->enc_pic.session_init.padding_height = enc->enc_pic.session_init.aligned_picture_height - enc->base.height; @@ -233,7 +233,7 @@ static void radeon_enc_session_init(struct radeon_encoder *enc) static void radeon_enc_session_init_hevc(struct radeon_encoder *enc) { enc->enc_pic.session_init.encode_standard = RENCODE_ENCODE_STANDARD_HEVC; - enc->enc_pic.session_init.aligned_picture_width = align(enc->base.width, 64); + enc->enc_pic.session_init.aligned_picture_width = align(enc->base.width, RENCODE_HEVC_WIDTH_ALIGN); enc->enc_pic.session_init.aligned_picture_height = align(enc->base.height, 16); enc->enc_pic.session_init.padding_width = enc->enc_pic.session_init.aligned_picture_width - enc->base.width; enc->enc_pic.session_init.padding_height = enc->enc_pic.session_init.aligned_picture_height - enc->base.height; -- 2.21.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev