diff --git a/src/amd/vulkan/radv_video_enc.c b/src/amd/vulkan/radv_video_enc.c index 3af5f073d00..4919bce6c82 100644 --- a/src/amd/vulkan/radv_video_enc.c +++ b/src/amd/vulkan/radv_video_enc.c @@ -923,7 +923,7 @@ radv_enc_slice_header_hevc(struct radv_cmd_buffer *cmd_buffer, const VkVideoEnco struct radv_device *device = radv_cmd_buffer_device(cmd_buffer); const struct radv_physical_device *pdev = radv_device_physical(device); struct radeon_cmdbuf *cs = cmd_buffer->cs; - unsigned nal_unit_type = vk_video_get_h265_nal_unit(pic->pic_type, pic->flags.IrapPicFlag); + unsigned nal_unit_type = vk_video_get_h265_nal_unit(pic); ENC_BEGIN; radeon_emit(cs, pdev->vcn_enc_cmds.slice_header); diff --git a/src/vulkan/runtime/vk_video.c b/src/vulkan/runtime/vk_video.c index 556201c3865..cf96c1e64de 100644 --- a/src/vulkan/runtime/vk_video.c +++ b/src/vulkan/runtime/vk_video.c @@ -1476,9 +1476,9 @@ enum HEVCNALUnitType { }; unsigned -vk_video_get_h265_nal_unit(StdVideoH265PictureType pic_type, bool irap_pic_flag) +vk_video_get_h265_nal_unit(const StdVideoEncodeH265PictureInfo *pic_info) { - switch (pic_type) { + switch (pic_info->pic_type) { case STD_VIDEO_H265_PICTURE_TYPE_IDR: return HEVC_NAL_IDR_W_RADL; case STD_VIDEO_H265_PICTURE_TYPE_I: @@ -1486,10 +1486,16 @@ vk_video_get_h265_nal_unit(StdVideoH265PictureType pic_type, bool irap_pic_flag) case STD_VIDEO_H265_PICTURE_TYPE_P: return HEVC_NAL_TRAIL_R; case STD_VIDEO_H265_PICTURE_TYPE_B: - if (irap_pic_flag) - return HEVC_NAL_RASL_R; + if (pic_info->flags.IrapPicFlag) + if (pic_info->flags.is_reference) + return HEVC_NAL_RASL_R; + else + return HEVC_NAL_RASL_N; else - return HEVC_NAL_TRAIL_R; + if (pic_info->flags.is_reference) + return HEVC_NAL_TRAIL_R; + else + return HEVC_NAL_TRAIL_N; break; default: assert(0); diff --git a/src/vulkan/runtime/vk_video.h b/src/vulkan/runtime/vk_video.h index a604e46f664..8eb8814a81c 100644 --- a/src/vulkan/runtime/vk_video.h +++ b/src/vulkan/runtime/vk_video.h @@ -322,7 +322,7 @@ vk_video_encode_h264_pps(const StdVideoH264PictureParameterSet *pps, void *data_ptr); unsigned -vk_video_get_h265_nal_unit(StdVideoH265PictureType pic_type, bool irap_pic_flag); +vk_video_get_h265_nal_unit(const StdVideoEncodeH265PictureInfo *pic_info); void vk_video_encode_h265_vps(const StdVideoH265VideoParameterSet *vps,