mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-09 14:50:11 +01:00
radeon/uvd: fix poc for hevc encode
MaxPicOrderCntLsb should be at least 16 according to the spec, therefore add minimum value check. Also use poc value passed from st instead of calculation in slice header encoding. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110673 Cc: mesa-stable@lists.freedesktop.org V2: Fix typo V3: Use MAX2 macro instead of coding. Also MaxPicOrderCntLsb should be power of 2 according to spec. Signed-off-by: Boyuan Zhang <boyuan.zhang@amd.com> Acked-by: Leo Liu <leo.liu@amd.com>
This commit is contained in:
parent
d5992ab134
commit
77cf700fa3
2 changed files with 3 additions and 3 deletions
|
|
@ -73,7 +73,8 @@ radeon_uvd_enc_get_param(struct radeon_uvd_encoder *enc,
|
|||
enc->enc_pic.general_tier_flag = pic->seq.general_tier_flag;
|
||||
enc->enc_pic.general_profile_idc = pic->seq.general_profile_idc;
|
||||
enc->enc_pic.general_level_idc = pic->seq.general_level_idc;
|
||||
enc->enc_pic.max_poc = pic->seq.intra_period;
|
||||
enc->enc_pic.max_poc =
|
||||
MAX2(16, util_next_power_of_two(pic->seq.intra_period));
|
||||
enc->enc_pic.log2_max_poc = 0;
|
||||
for (int i = enc->enc_pic.max_poc; i != 0; enc->enc_pic.log2_max_poc++)
|
||||
i = (i >> 1);
|
||||
|
|
|
|||
|
|
@ -768,8 +768,7 @@ radeon_uvd_enc_slice_header_hevc(struct radeon_uvd_encoder *enc)
|
|||
if ((enc->enc_pic.nal_unit_type != 19)
|
||||
&& (enc->enc_pic.nal_unit_type != 20)) {
|
||||
radeon_uvd_enc_code_fixed_bits(enc,
|
||||
enc->enc_pic.frame_num %
|
||||
enc->enc_pic.max_poc,
|
||||
enc->enc_pic.pic_order_cnt,
|
||||
enc->enc_pic.log2_max_poc);
|
||||
if (enc->enc_pic.picture_type == PIPE_H265_ENC_PICTURE_TYPE_P)
|
||||
radeon_uvd_enc_code_fixed_bits(enc, 0x1, 1);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue