| From 05cc018ae6f91ccdb96bc0badcbb25124ee2275e Mon Sep 17 00:00:00 2001 |
| From: suresh guttula <suresh.guttula@amd.com> |
| Date: Thu, 11 Apr 2019 10:19:33 +0530 |
| Subject: [PATCH 2/3] radeon/vce:Add support for frame_cropping_flag of |
| VAEncSequenceParameterBufferH264 |
| |
| This patch will add support for frame_cropping when the input size is not |
| matched with aligned size. Currently vaapi driver ignores frame cropping |
| values provided by client. This change will update SPS nalu with proper |
| cropping values. |
| |
| v2: Moving default crop setting to else when enc_frame_cropping_flag is not set. |
| |
| Signed-off-by: Satyajit Sahu <satyajit.sahu@amd.com> |
| Reviewed-by: Leo Liu <leo.liu@amd.com> |
| --- |
| src/gallium/drivers/radeon/radeon_vce_52.c | 11 +++++++++-- |
| 1 file changed, 9 insertions(+), 2 deletions(-) |
| |
| diff --git a/src/gallium/drivers/radeon/radeon_vce_52.c b/src/gallium/drivers/radeon/radeon_vce_52.c |
| index fc7ddc62a90..364da4dbe24 100644 |
| --- a/src/gallium/drivers/radeon/radeon_vce_52.c |
| +++ b/src/gallium/drivers/radeon/radeon_vce_52.c |
| @@ -81,8 +81,15 @@ static void get_pic_control_param(struct rvce_encoder *enc, struct pipe_h264_enc |
| unsigned encNumMBsPerSlice; |
| encNumMBsPerSlice = align(enc->base.width, 16) / 16; |
| encNumMBsPerSlice *= align(enc->base.height, 16) / 16; |
| - enc->enc_pic.pc.enc_crop_right_offset = (align(enc->base.width, 16) - enc->base.width) >> 1; |
| - enc->enc_pic.pc.enc_crop_bottom_offset = (align(enc->base.height, 16) - enc->base.height) >> 1; |
| + if (pic->pic_ctrl.enc_frame_cropping_flag) { |
| + enc->enc_pic.pc.enc_crop_left_offset = pic->pic_ctrl.enc_frame_crop_left_offset; |
| + enc->enc_pic.pc.enc_crop_right_offset = pic->pic_ctrl.enc_frame_crop_right_offset; |
| + enc->enc_pic.pc.enc_crop_top_offset = pic->pic_ctrl.enc_frame_crop_top_offset; |
| + enc->enc_pic.pc.enc_crop_bottom_offset = pic->pic_ctrl.enc_frame_crop_bottom_offset; |
| + } else { |
| + enc->enc_pic.pc.enc_crop_right_offset = (align(enc->base.width, 16) - enc->base.width) >> 1; |
| + enc->enc_pic.pc.enc_crop_bottom_offset = (align(enc->base.height, 16) - enc->base.height) >> 1; |
| + } |
| enc->enc_pic.pc.enc_num_mbs_per_slice = encNumMBsPerSlice; |
| enc->enc_pic.pc.enc_b_pic_pattern = MAX2(enc->base.max_references, 1) - 1; |
| enc->enc_pic.pc.enc_number_of_reference_frames = MIN2(enc->base.max_references, 2); |
| -- |
| 2.19.1 |
| |