23 #include <vdpau/vdpau.h>
57 VdpPictureInfoAV1 *
info = &pic_ctx->
info.av1;
94 info->force_integer_mv =
s->cur_frame.force_integer_mv;
101 info->disable_frame_end_update_cdf =
frame_header->disable_frame_end_update_cdf;
105 info->coded_lossless =
s->cur_frame.coded_lossless;
124 s->cur_frame.skip_mode_frame_idx[0] : 0;
126 s->cur_frame.skip_mode_frame_idx[1] : 0;
143 info->segmentation_temporal_update =
frame_header->segmentation_temporal_update;
153 info->loop_filter_mode_deltas[0] =
frame_header->loop_filter_mode_deltas[0];
154 info->loop_filter_mode_deltas[1] =
frame_header->loop_filter_mode_deltas[1];
168 info->temporal_layer_id =
s->cur_frame.temporal_id;
169 info->spatial_layer_id =
s->cur_frame.spatial_id;
208 info->segmentation_feature_mask[
i] = 0;
225 info->primary_ref_frame = -1;
228 info->primary_ref_frame =
info->ref_frame_map[pri_ref_idx];
236 info->ref_frame[
i].index =
info->ref_frame_map[ref_idx];
243 for (j = 0; j < 6; ++j) {
250 for (
i = 0;
i < 14; ++
i) {
254 for (
i = 0;
i < 10; ++
i) {
260 for (
i = 0;
i < 24; ++
i) {
263 for (
i = 0;
i < 25; ++
i) {
280 VdpPictureInfoAV1 *
info = &pic_ctx->
info.av1;
284 int bitstream_len = 0;
288 if (nb_slices ==
s->tg_end -
s->tg_start + 1) {
289 for (
int i = 0;
i < nb_slices; ++
i) {
290 info->tile_info[
i*2 ] =
s->tile_group_info[
i].tile_offset;
291 info->tile_info[
i*2 + 1] =
info->tile_info[
i*2] +
s->tile_group_info[
i].tile_size;
302 bitstream_len += buffers->bitstream_bytes;
306 for (uint32_t tile_num =
s->tg_start; tile_num <= s->tg_end; ++tile_num) {
307 info->tile_info[tile_num*2 ] = bitstream_len +
s->tile_group_info[tile_num].tile_offset;
308 info->tile_info[tile_num*2 + 1] =
info->tile_info[tile_num*2] +
s->tile_group_info[tile_num].tile_size;
340 profile = VDP_DECODER_PROFILE_AV1_MAIN;
343 profile = VDP_DECODER_PROFILE_AV1_HIGH;
346 profile = VDP_DECODER_PROFILE_AV1_PROFESSIONAL;
356 .
p.
name =
"av1_vdpau",