23 #include "config_components.h"
54 CUVIDPICPARAMS *pp = &
ctx->pic_params;
55 CUVIDAV1PICPARAMS *ppc = &pp->CodecSpecific.av1;
72 *pp = (CUVIDPICPARAMS) {
73 .PicWidthInMbs = (cur_frame->
width + 15) / 16,
74 .FrameHeightInMbs = (cur_frame->
height + 15) / 16,
75 .CurrPicIdx = cf->
idx,
80 .CodecSpecific.av1 = {
81 .width = cur_frame->
width,
82 .height = cur_frame->
height,
112 .allow_screen_content_tools =
frame_header->allow_screen_content_tools,
113 .force_integer_mv =
s->cur_frame.force_integer_mv,
116 .allow_high_precision_mv =
frame_header->allow_high_precision_mv,
118 .switchable_motion_mode =
frame_header->is_motion_mode_switchable,
120 .disable_frame_end_update_cdf =
frame_header->disable_frame_end_update_cdf,
124 .coded_lossless =
s->cur_frame.coded_lossless,
128 .allow_warped_motion =
frame_header->allow_warped_motion,
135 .context_update_tile_id =
frame_header->context_update_tile_id,
138 .cdef_damping_minus_3 =
frame_header->cdef_damping_minus_3,
143 s->cur_frame.skip_mode_frame_idx[0] : 0,
145 s->cur_frame.skip_mode_frame_idx[1] : 0,
159 .segmentation_enabled =
frame_header->segmentation_enabled,
160 .segmentation_update_map =
frame_header->segmentation_update_map,
161 .segmentation_update_data =
frame_header->segmentation_update_data,
162 .segmentation_temporal_update =
frame_header->segmentation_temporal_update,
165 .loop_filter_level[0] =
frame_header->loop_filter_level[0],
166 .loop_filter_level[1] =
frame_header->loop_filter_level[1],
167 .loop_filter_level_u =
frame_header->loop_filter_level[2],
168 .loop_filter_level_v =
frame_header->loop_filter_level[3],
169 .loop_filter_sharpness =
frame_header->loop_filter_sharpness,
170 .loop_filter_delta_enabled =
frame_header->loop_filter_delta_enabled,
171 .loop_filter_delta_update =
frame_header->loop_filter_delta_update,
172 .loop_filter_mode_deltas[0] =
frame_header->loop_filter_mode_deltas[0],
173 .loop_filter_mode_deltas[1] =
frame_header->loop_filter_mode_deltas[1],
187 .temporal_layer_id =
s->cur_frame.temporal_id,
188 .spatial_layer_id =
s->cur_frame.spatial_id,
191 .apply_grain = apply_grain,
203 .cb_mult = film_grain->
cb_mult,
206 .cr_mult = film_grain->
cr_mult,
217 ppc->tile_heights[
i] =
frame_header->height_in_sbs_minus_1[
i] + 1;
228 ppc->segmentation_feature_mask[
i] = 0;
230 ppc->segmentation_feature_mask[
i] |=
frame_header->feature_enabled[
i][j] << j;
231 ppc->segmentation_feature_data[
i][j] =
frame_header->feature_value[
i][j];
237 ppc->loop_filter_ref_deltas[
i] =
frame_header->loop_filter_ref_deltas[
i];
244 ppc->primary_ref_frame = -1;
247 ppc->primary_ref_frame = ppc->ref_frame_map[pri_ref_idx];
255 ppc->ref_frame[
i].index = ppc->ref_frame_map[ref_idx];
262 for (j = 0; j < 6; ++j) {
269 for (
i = 0;
i < 14; ++
i) {
273 for (
i = 0;
i < 10; ++
i) {
279 for (
i = 0;
i < 24; ++
i) {
282 for (
i = 0;
i < 25; ++
i) {
301 ctx->nb_slices * 2 *
sizeof(*
ctx->slice_offsets));
308 if (
ctx->nb_slices ==
s->tg_end -
s->tg_start + 1) {
312 for (
int i = 0;
i <
ctx->nb_slices; ++
i) {
313 ctx->slice_offsets[
i*2 ] =
s->tile_group_info[
i].tile_offset;
314 ctx->slice_offsets[
i*2 + 1] =
ctx->slice_offsets[
i*2] +
s->tile_group_info[
i].tile_size;
325 ctx->bitstream =
ctx->bitstream_internal =
tmp;
329 for (uint32_t tile_num =
s->tg_start; tile_num <= s->tg_end; ++tile_num) {
330 ctx->slice_offsets[tile_num*2 ] =
ctx->bitstream_len +
s->tile_group_info[tile_num].tile_offset;
331 ctx->slice_offsets[tile_num*2 + 1] =
ctx->slice_offsets[tile_num*2] +
s->tile_group_info[tile_num].tile_size;
346 #if CONFIG_AV1_NVDEC_HWACCEL
354 .
p.
name =
"av1_nvdec",
361 .frame_params = nvdec_av1_cuda_frame_params,
368 #if CONFIG_AV1_NVDEC_CUARRAY_HWACCEL
376 .
p.
name =
"av1_nvdec_cuarray",
383 .frame_params = nvdec_av1_cuarray_frame_params,