From 602c62a2736d7c9f8a8b9964d772ba65b2a58f47 Mon Sep 17 00:00:00 2001 From: Colin Marc Date: Wed, 1 May 2024 12:54:52 +0200 Subject: [PATCH] vulkan/video: correctly set sub-layer ordering in H.265 VPS/SPS The relevant sections here are F.7.3.2.1 and F.7.3.2.2.1. The code was incorrectly assuming sub_layer_ordering_info_present_flag is always 1. Reviewed-by: Hyunjun Ko Part-of: --- src/vulkan/runtime/vk_video.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/vulkan/runtime/vk_video.c b/src/vulkan/runtime/vk_video.c index ca69ed62595..47cf1bd8777 100644 --- a/src/vulkan/runtime/vk_video.c +++ b/src/vulkan/runtime/vk_video.c @@ -1779,13 +1779,13 @@ vk_video_encode_h265_vps(const StdVideoH265VideoParameterSet *vps, vl_bitstream_put_bits(&enc, 1, vps->flags.vps_sub_layer_ordering_info_present_flag); - for (int i = 0; i <= vps->vps_max_sub_layers_minus1; i++) { + int i = vps->flags.vps_sub_layer_ordering_info_present_flag ? 0 : vps->vps_max_sub_layers_minus1; + for (; i <= vps->vps_max_sub_layers_minus1; i++) { vl_bitstream_exp_golomb_ue(&enc, vps->pDecPicBufMgr->max_dec_pic_buffering_minus1[i]); vl_bitstream_exp_golomb_ue(&enc, vps->pDecPicBufMgr->max_num_reorder_pics[i]); vl_bitstream_exp_golomb_ue(&enc, vps->pDecPicBufMgr->max_latency_increase_plus1[i]); } - vl_bitstream_put_bits(&enc, 6, 0);//vps->vps_max_layer_id); vl_bitstream_exp_golomb_ue(&enc, 0);//vps->vps_num_layer_sets_minus1); vl_bitstream_put_bits(&enc, 1, vps->flags.vps_timing_info_present_flag); @@ -1885,7 +1885,8 @@ vk_video_encode_h265_sps(const StdVideoH265SequenceParameterSet *sps, vl_bitstream_exp_golomb_ue(&enc, sps->log2_max_pic_order_cnt_lsb_minus4); vl_bitstream_put_bits(&enc, 1, sps->flags.sps_sub_layer_ordering_info_present_flag); - for (int i = 0; i <= sps->sps_max_sub_layers_minus1; i++) { + int i = sps->flags.sps_sub_layer_ordering_info_present_flag ? 0 : sps->sps_max_sub_layers_minus1; + for (; i <= sps->sps_max_sub_layers_minus1; i++) { vl_bitstream_exp_golomb_ue(&enc, sps->pDecPicBufMgr->max_dec_pic_buffering_minus1[i]); vl_bitstream_exp_golomb_ue(&enc, sps->pDecPicBufMgr->max_num_reorder_pics[i]); vl_bitstream_exp_golomb_ue(&enc, sps->pDecPicBufMgr->max_latency_increase_plus1[i]);