Mesa (master): radeon/vce:Add support for frame_cropping_flag of VAEncSequenceParameterBufferH264

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Apr 16 14:16:54 UTC 2019


Module: Mesa
Branch: master
Commit: 05cc018ae6f91ccdb96bc0badcbb25124ee2275e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=05cc018ae6f91ccdb96bc0badcbb25124ee2275e

Author: suresh guttula <suresh.guttula at amd.com>
Date:   Thu Apr 11 10:37:33 2019 +0530

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 at amd.com>
Reviewed-by: Leo Liu <leo.liu at 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);




More information about the mesa-commit mailing list