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>
(cherry picked from commit ea2eade57b)
This commit is contained in:
Dave Airlie 2023-05-25 09:37:39 +10:00 committed by Eric Engestrom
parent 1a86a603d0
commit d4f5fc709e
2 changed files with 12 additions and 3 deletions

View file

@ -589,7 +589,7 @@
"description": "radv/video: use correct h264 levels",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "1693c03a39630a43e179b84b6cb4dadba72721c0"
},

View file

@ -591,6 +591,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,
@ -629,7 +638,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;
@ -1094,7 +1103,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;