radv/video: use correct h264 levels

This should be set to the enum, ffmpeg has it wrong so far, but the sample decoder has it right.

convert radv to the proper answer.

Fixes: 1693c03a39 ("radv/video: add initial h264 decoder for VCN")
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23225>
This commit is contained in:
Dave Airlie
2023-05-25 09:37:39 +10:00
committed by Marge Bot
parent 81b0840caa
commit ea2eade57b

View File

@@ -712,6 +712,15 @@ static void rvcn_dec_message_feedback(void *ptr)
header->num_buffers = 0;
}
static const uint8_t h264_levels[] = { 10, 11, 12, 13, 20, 21, 22,
30, 31, 32, 40, 41, 42,
50, 51, 52, 60, 61, 62 };
static uint8_t get_h264_level(StdVideoH264LevelIdc level)
{
assert (level <= STD_VIDEO_H264_LEVEL_IDC_6_2);
return h264_levels[level];
}
static rvcn_dec_message_avc_t get_h264_msg(struct radv_video_session *vid,
struct radv_video_session_params *params,
const struct VkVideoDecodeInfoKHR *frame_info,
@@ -750,7 +759,7 @@ static rvcn_dec_message_avc_t get_h264_msg(struct radv_video_session *vid,
*height_in_samples = (sps->pic_height_in_map_units_minus1 + 1) * 16;
if (!sps->flags.frame_mbs_only_flag)
*height_in_samples *= 2;
result.level = sps->level_idc;
result.level = get_h264_level(sps->level_idc);
result.sps_info_flags = 0;
@@ -1214,7 +1223,7 @@ static struct ruvd_h264 get_uvd_h264_msg(struct radv_video_session *vid,
*height_in_samples = (sps->pic_height_in_map_units_minus1 + 1) * 16;
if (!sps->flags.frame_mbs_only_flag)
*height_in_samples *= 2;
result.level = sps->level_idc;
result.level = get_h264_level(sps->level_idc);
result.sps_info_flags = 0;