mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 09:08:10 +02:00
vulkan/video: generate profile_tier_level structure correctly
Per section 7.7.3, the structure includes additional optional layer-specific information, which is padded if left unset, based on the value of max_sub_layers_minus1. The vulkan input structs have no way to specify this per-layer information, so we just need the padding. Reviewed-by: Hyunjun Ko <zzoon@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29001>
This commit is contained in:
parent
8d983b3425
commit
b613566faf
1 changed files with 9 additions and 3 deletions
|
|
@ -1731,7 +1731,8 @@ emit_nalu_h265_header(struct vl_bitstream_encoder *enc,
|
|||
|
||||
static void
|
||||
encode_h265_profile_tier_level(struct vl_bitstream_encoder *enc,
|
||||
const StdVideoH265ProfileTierLevel *ptl)
|
||||
const StdVideoH265ProfileTierLevel *ptl,
|
||||
unsigned int max_sub_layers_minus1)
|
||||
{
|
||||
vl_bitstream_put_bits(enc, 2, 0);
|
||||
vl_bitstream_put_bits(enc, 1, ptl->flags.general_tier_flag);
|
||||
|
|
@ -1747,6 +1748,11 @@ encode_h265_profile_tier_level(struct vl_bitstream_encoder *enc,
|
|||
vl_bitstream_put_bits(enc, 31, 0);
|
||||
vl_bitstream_put_bits(enc, 13, 0);
|
||||
vl_bitstream_put_bits(enc, 8, vk_video_get_h265_level(ptl->general_level_idc));
|
||||
|
||||
if (max_sub_layers_minus1 > 0) {
|
||||
/* sub_layer_(profile|level)_present_flag, plus padding */
|
||||
vl_bitstream_put_bits(enc, 16, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -1769,7 +1775,7 @@ vk_video_encode_h265_vps(const StdVideoH265VideoParameterSet *vps,
|
|||
vl_bitstream_put_bits(&enc, 1, vps->flags.vps_temporal_id_nesting_flag);
|
||||
vl_bitstream_put_bits(&enc, 16, 0xffff);
|
||||
|
||||
encode_h265_profile_tier_level(&enc, vps->pProfileTierLevel);
|
||||
encode_h265_profile_tier_level(&enc, vps->pProfileTierLevel, vps->vps_max_sub_layers_minus1);
|
||||
|
||||
vl_bitstream_put_bits(&enc, 1, vps->flags.vps_sub_layer_ordering_info_present_flag);
|
||||
|
||||
|
|
@ -1856,7 +1862,7 @@ vk_video_encode_h265_sps(const StdVideoH265SequenceParameterSet *sps,
|
|||
vl_bitstream_put_bits(&enc, 3, sps->sps_max_sub_layers_minus1);
|
||||
vl_bitstream_put_bits(&enc, 1, sps->flags.sps_temporal_id_nesting_flag);
|
||||
|
||||
encode_h265_profile_tier_level(&enc, sps->pProfileTierLevel);
|
||||
encode_h265_profile_tier_level(&enc, sps->pProfileTierLevel, sps->sps_max_sub_layers_minus1);
|
||||
|
||||
vl_bitstream_exp_golomb_ue(&enc, sps->sps_seq_parameter_set_id);
|
||||
vl_bitstream_exp_golomb_ue(&enc, sps->chroma_format_idc);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue