56 VkVideoReferenceSlotInfoKHR *ref_slot,
57 VkVideoPictureResourceInfoKHR *
ref,
59 const AV1Frame *pic,
int is_current,
int has_grain,
76 for (
unsigned i = 0;
i < 7;
i++) {
83 *
ref = (VkVideoPictureResourceInfoKHR) {
84 .sType = VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR,
85 .codedOffset = (VkOffset2D){ 0, 0 },
92 *ref_slot = (VkVideoReferenceSlotInfoKHR) {
93 .sType = VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR,
95 .slotIndex = dpb_slot_index,
96 .pPictureResource =
ref,
116 VkVideoSessionParametersCreateInfoKHR session_params_create;
122 .still_picture = seq->still_picture,
123 .reduced_still_picture_header = seq->reduced_still_picture_header,
124 .use_128x128_superblock = seq->use_128x128_superblock,
125 .enable_filter_intra = seq->enable_filter_intra,
126 .enable_intra_edge_filter = seq->enable_intra_edge_filter,
127 .enable_interintra_compound = seq->enable_interintra_compound,
128 .enable_masked_compound = seq->enable_masked_compound,
129 .enable_warped_motion = seq->enable_warped_motion,
130 .enable_dual_filter = seq->enable_dual_filter,
131 .enable_order_hint = seq->enable_order_hint,
132 .enable_jnt_comp = seq->enable_jnt_comp,
133 .enable_ref_frame_mvs = seq->enable_ref_frame_mvs,
134 .frame_id_numbers_present_flag = seq->frame_id_numbers_present_flag,
135 .enable_superres = seq->enable_superres,
136 .enable_cdef = seq->enable_cdef,
137 .enable_restoration = seq->enable_restoration,
138 .film_grain_params_present = seq->film_grain_params_present,
139 .timing_info_present_flag = seq->timing_info_present_flag,
140 .initial_display_delay_present_flag = seq->initial_display_delay_present_flag,
142 .seq_profile = seq->seq_profile,
143 .frame_width_bits_minus_1 = seq->frame_width_bits_minus_1,
144 .frame_height_bits_minus_1 = seq->frame_height_bits_minus_1,
145 .max_frame_width_minus_1 = seq->max_frame_width_minus_1,
146 .max_frame_height_minus_1 = seq->max_frame_height_minus_1,
147 .delta_frame_id_length_minus_2 = seq->delta_frame_id_length_minus_2,
148 .additional_frame_id_length_minus_1 = seq->additional_frame_id_length_minus_1,
149 .order_hint_bits_minus_1 = seq->order_hint_bits_minus_1,
152 .equal_picture_interval = seq->timing_info.equal_picture_interval,
154 .num_units_in_display_tick = seq->timing_info.num_units_in_display_tick,
155 .time_scale = seq->timing_info.time_scale,
156 .num_ticks_per_picture_minus_1 = seq->timing_info.num_ticks_per_picture_minus_1,
160 .mono_chrome = seq->color_config.mono_chrome,
161 .color_range = seq->color_config.color_range,
162 .separate_uv_delta_q = seq->color_config.separate_uv_delta_q,
164 .bit_depth = seq->color_config.twelve_bit ? 12 :
165 seq->color_config.high_bitdepth ? 10 : 8,
166 .subsampling_x = seq->color_config.subsampling_x,
167 .subsampling_y = seq->color_config.subsampling_y,
173 .sequence_header = &av1_sequence_header,
177 .pParametersAddInfo = &av1_params_info,
179 session_params_create = (VkVideoSessionParametersCreateInfoKHR) {
180 .sType = VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR,
181 .pNext = &av1_params,
182 .videoSession =
ctx->common.session,
183 .videoSessionParametersTemplate =
NULL,
219 unsigned slot_idx = 0;
220 for (
unsigned i = 0;
i < 32;
i++) {
248 pic, 1, apply_grain, 8);
262 .sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR,
265 .pSetupReferenceSlot = &vp->
ref_slot,
266 .referenceSlotCount = ref_count,
268 .dstPictureResource = (VkVideoPictureResourceInfoKHR) {
269 .sType = VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR,
270 .codedOffset = (VkOffset2D){ 0, 0 },
271 .codedExtent = (VkExtent2D){ pic->
f->
width, pic->
f->
height },
283 .render_and_frame_size_different =
frame_header->render_and_frame_size_different,
284 .allow_screen_content_tools =
frame_header->allow_screen_content_tools,
285 .is_filter_switchable =
frame_header->is_filter_switchable,
287 .frame_size_override_flag =
frame_header->frame_size_override_flag,
288 .buffer_removal_time_present_flag =
frame_header->buffer_removal_time_present_flag,
290 .frame_refs_short_signaling =
frame_header->frame_refs_short_signaling,
291 .allow_high_precision_mv =
frame_header->allow_high_precision_mv,
292 .is_motion_mode_switchable =
frame_header->is_motion_mode_switchable,
294 .disable_frame_end_update_cdf =
frame_header->disable_frame_end_update_cdf,
295 .allow_warped_motion =
frame_header->allow_warped_motion,
301 .frame_to_show_map_idx =
frame_header->frame_to_show_map_idx,
302 .frame_presentation_time =
frame_header->frame_presentation_time,
308 .frame_width_minus_1 =
frame_header->frame_width_minus_1,
309 .frame_height_minus_1 =
frame_header->frame_height_minus_1,
311 .render_width_minus_1 =
frame_header->render_width_minus_1,
312 .render_height_minus_1 =
frame_header->render_height_minus_1,
313 .refresh_frame_flags =
frame_header->refresh_frame_flags,
314 .interpolation_filter =
frame_header->interpolation_filter,
318 .uniform_tile_spacing_flag =
frame_header->uniform_tile_spacing_flag,
322 .context_update_tile_id =
frame_header->context_update_tile_id,
323 .tile_size_bytes_minus1 =
frame_header->tile_size_bytes_minus1,
348 .delta_enabled =
frame_header->loop_filter_delta_enabled,
373 .temporal_update =
frame_header->segmentation_temporal_update,
379 .apply_grain = apply_grain,
392 .cb_mult = film_grain->
cb_mult,
395 .cr_mult = film_grain->
cr_mult,
401 for (
int i = 0;
i < 64;
i++) {
408 for (
int i = 0;
i < 8;
i++) {
410 for (
int j = 0; j < 8; j++) {
427 .gm_type =
s->cur_frame.gm_type[
i],
429 s->cur_frame.gm_params[
i][0],
s->cur_frame.gm_params[
i][1],
430 s->cur_frame.gm_params[
i][2],
s->cur_frame.gm_params[
i][3],
431 s->cur_frame.gm_params[
i][4],
s->cur_frame.gm_params[
i][5],
436 for (
int i = 0;
i < 7;
i++) {
445 for (
int i = 0;
i < 14;
i++) {
450 for (
int i = 0;
i < 10;
i++) {
457 for (
int i = 0;
i < 24;
i++) {
482 for (
int i =
s->tg_start; i <= s->tg_end;
i++) {
484 .
size =
s->tile_group_info[
i].tile_size,
485 .offset =
s->tile_group_info[
i].tile_offset,
486 .row =
s->tile_group_info[
i].tile_row,
487 .column =
s->tile_group_info[
i].tile_column,
488 .tg_start =
s->tg_start,
493 data +
s->tile_group_info[
i].tile_offset,
494 s->tile_group_info[
i].tile_size, 0,
556 .
p.
name =
"av1_vulkan",