Module: Mesa Branch: main Commit: 756e5d66871a3bf65dd365e17e0f674b78bb903e URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=756e5d66871a3bf65dd365e17e0f674b78bb903e
Author: David Rosca <[email protected]> Date: Mon Jul 17 14:18:41 2023 +0200 radeonsi/vcn: Set HEVC video signal parameters in bitstream Reviewed-by: Ruijing Dong <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24174> --- src/gallium/drivers/radeonsi/radeon_vcn_enc.c | 9 +++++++++ src/gallium/drivers/radeonsi/radeon_vcn_enc_1_2.c | 13 ++++++++++++- src/gallium/drivers/radeonsi/radeon_vcn_enc_2_0.c | 13 ++++++++++++- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/radeonsi/radeon_vcn_enc.c b/src/gallium/drivers/radeonsi/radeon_vcn_enc.c index 7ee8840659a..f0fe889cd69 100644 --- a/src/gallium/drivers/radeonsi/radeon_vcn_enc.c +++ b/src/gallium/drivers/radeonsi/radeon_vcn_enc.c @@ -394,11 +394,20 @@ static void radeon_vcn_enc_hevc_get_vui_param(struct radeon_encoder *enc, pic->seq.vui_flags.aspect_ratio_info_present_flag; enc->enc_pic.vui_info.flags.timing_info_present_flag = pic->seq.vui_flags.timing_info_present_flag; + enc->enc_pic.vui_info.flags.video_signal_type_present_flag = + pic->seq.vui_flags.video_signal_type_present_flag; + enc->enc_pic.vui_info.flags.colour_description_present_flag = + pic->seq.vui_flags.colour_description_present_flag; enc->enc_pic.vui_info.aspect_ratio_idc = pic->seq.aspect_ratio_idc; enc->enc_pic.vui_info.sar_width = pic->seq.sar_width; enc->enc_pic.vui_info.sar_height = pic->seq.sar_height; enc->enc_pic.vui_info.num_units_in_tick = pic->seq.num_units_in_tick; enc->enc_pic.vui_info.time_scale = pic->seq.time_scale; + enc->enc_pic.vui_info.video_format = pic->seq.video_format; + enc->enc_pic.vui_info.video_full_range_flag = pic->seq.video_full_range_flag; + enc->enc_pic.vui_info.colour_primaries = pic->seq.colour_primaries; + enc->enc_pic.vui_info.transfer_characteristics = pic->seq.transfer_characteristics; + enc->enc_pic.vui_info.matrix_coefficients = pic->seq.matrix_coefficients; } /* only checking the first slice to get num of ctbs in slice to diff --git a/src/gallium/drivers/radeonsi/radeon_vcn_enc_1_2.c b/src/gallium/drivers/radeonsi/radeon_vcn_enc_1_2.c index 5115c2d55a8..09d0e3f7ff2 100644 --- a/src/gallium/drivers/radeonsi/radeon_vcn_enc_1_2.c +++ b/src/gallium/drivers/radeonsi/radeon_vcn_enc_1_2.c @@ -444,7 +444,18 @@ static void radeon_enc_nalu_sps_hevc(struct radeon_encoder *enc) } } radeon_enc_code_fixed_bits(enc, 0x0, 1); /* overscan info present flag */ - radeon_enc_code_fixed_bits(enc, 0x0, 1); /* video signal type present flag */ + /* video signal type present flag */ + radeon_enc_code_fixed_bits(enc, pic->vui_info.flags.video_signal_type_present_flag, 1); + if (pic->vui_info.flags.video_signal_type_present_flag) { + radeon_enc_code_fixed_bits(enc, pic->vui_info.video_format, 3); + radeon_enc_code_fixed_bits(enc, pic->vui_info.video_full_range_flag, 1); + radeon_enc_code_fixed_bits(enc, pic->vui_info.flags.colour_description_present_flag, 1); + if (pic->vui_info.flags.colour_description_present_flag) { + radeon_enc_code_fixed_bits(enc, pic->vui_info.colour_primaries, 8); + radeon_enc_code_fixed_bits(enc, pic->vui_info.transfer_characteristics, 8); + radeon_enc_code_fixed_bits(enc, pic->vui_info.matrix_coefficients, 8); + } + } radeon_enc_code_fixed_bits(enc, 0x0, 1); /* chroma loc info present flag */ radeon_enc_code_fixed_bits(enc, 0x0, 1); /* neutral chroma indication flag */ radeon_enc_code_fixed_bits(enc, 0x0, 1); /* field seq flag */ diff --git a/src/gallium/drivers/radeonsi/radeon_vcn_enc_2_0.c b/src/gallium/drivers/radeonsi/radeon_vcn_enc_2_0.c index e2aaf6e0638..dff1825fb5a 100644 --- a/src/gallium/drivers/radeonsi/radeon_vcn_enc_2_0.c +++ b/src/gallium/drivers/radeonsi/radeon_vcn_enc_2_0.c @@ -336,7 +336,18 @@ static void radeon_enc_nalu_sps_hevc(struct radeon_encoder *enc) } } radeon_enc_code_fixed_bits(enc, 0x0, 1); /* overscan info present flag */ - radeon_enc_code_fixed_bits(enc, 0x0, 1); /* video signal type present flag */ + /* video signal type present flag */ + radeon_enc_code_fixed_bits(enc, pic->vui_info.flags.video_signal_type_present_flag, 1); + if (pic->vui_info.flags.video_signal_type_present_flag) { + radeon_enc_code_fixed_bits(enc, pic->vui_info.video_format, 3); + radeon_enc_code_fixed_bits(enc, pic->vui_info.video_full_range_flag, 1); + radeon_enc_code_fixed_bits(enc, pic->vui_info.flags.colour_description_present_flag, 1); + if (pic->vui_info.flags.colour_description_present_flag) { + radeon_enc_code_fixed_bits(enc, pic->vui_info.colour_primaries, 8); + radeon_enc_code_fixed_bits(enc, pic->vui_info.transfer_characteristics, 8); + radeon_enc_code_fixed_bits(enc, pic->vui_info.matrix_coefficients, 8); + } + } radeon_enc_code_fixed_bits(enc, 0x0, 1); /* chroma loc info present flag */ radeon_enc_code_fixed_bits(enc, 0x0, 1); /* neutral chroma indication flag */ radeon_enc_code_fixed_bits(enc, 0x0, 1); /* field seq flag */
