| 80 | } |
| 81 | |
| 82 | static int vaapi_vvc_start_frame(AVCodecContext *avctx, |
| 83 | av_unused const AVBufferRef *buffer_ref, |
| 84 | av_unused const uint8_t *buffer, |
| 85 | av_unused uint32_t size) |
| 86 | { |
| 87 | const VVCContext *h = avctx->priv_data; |
| 88 | VVCFrameContext *fc = &h->fcs[(h->nb_frames + h->nb_fcs) % h->nb_fcs]; |
| 89 | const H266RawSPS *sps = fc->ps.sps->r; |
| 90 | const H266RawPPS *pps = fc->ps.pps->r; |
| 91 | const H266RawPictureHeader *ph = fc->ps.ph.r; |
| 92 | VAAPIDecodePictureVVC *pic = fc->ref->hwaccel_picture_private; |
| 93 | VAPictureParameterBufferVVC *pic_param = &pic->pic_param; |
| 94 | uint16_t tile_dim, exp_slice_height_in_ctus[VVC_MAX_SLICES] = {0}; |
| 95 | int i, j, k, err; |
| 96 | |
| 97 | pic->pic.output_surface = ff_vaapi_get_surface_id(fc->ref->frame); |
| 98 | |
| 99 | *pic_param = (VAPictureParameterBufferVVC) { |
| 100 | .pps_pic_width_in_luma_samples = pps->pps_pic_width_in_luma_samples, |
| 101 | .pps_pic_height_in_luma_samples = pps->pps_pic_height_in_luma_samples, |
| 102 | .sps_num_subpics_minus1 = sps->sps_num_subpics_minus1, |
| 103 | .sps_chroma_format_idc = sps->sps_chroma_format_idc, |
| 104 | .sps_bitdepth_minus8 = sps->sps_bitdepth_minus8, |
| 105 | .sps_log2_ctu_size_minus5 = sps->sps_log2_ctu_size_minus5, |
| 106 | .sps_log2_min_luma_coding_block_size_minus2 = sps->sps_log2_min_luma_coding_block_size_minus2, |
| 107 | .sps_log2_transform_skip_max_size_minus2 = sps->sps_log2_transform_skip_max_size_minus2, |
| 108 | .sps_six_minus_max_num_merge_cand = sps->sps_six_minus_max_num_merge_cand, |
| 109 | .sps_five_minus_max_num_subblock_merge_cand = sps->sps_five_minus_max_num_subblock_merge_cand, |
| 110 | .sps_max_num_merge_cand_minus_max_num_gpm_cand = sps->sps_max_num_merge_cand_minus_max_num_gpm_cand, |
| 111 | .sps_log2_parallel_merge_level_minus2 = sps->sps_log2_parallel_merge_level_minus2, |
| 112 | .sps_min_qp_prime_ts = sps->sps_min_qp_prime_ts, |
| 113 | .sps_six_minus_max_num_ibc_merge_cand = sps->sps_six_minus_max_num_ibc_merge_cand, |
| 114 | .sps_num_ladf_intervals_minus2 = sps->sps_num_ladf_intervals_minus2, |
| 115 | .sps_ladf_lowest_interval_qp_offset = sps->sps_ladf_lowest_interval_qp_offset, |
| 116 | .sps_flags.bits = { |
| 117 | .sps_subpic_info_present_flag = sps->sps_subpic_info_present_flag, |
| 118 | .sps_independent_subpics_flag = sps->sps_independent_subpics_flag, |
| 119 | .sps_subpic_same_size_flag = sps->sps_subpic_same_size_flag, |
| 120 | .sps_entropy_coding_sync_enabled_flag = sps->sps_entropy_coding_sync_enabled_flag, |
| 121 | .sps_qtbtt_dual_tree_intra_flag = sps->sps_qtbtt_dual_tree_intra_flag, |
| 122 | .sps_max_luma_transform_size_64_flag = sps->sps_max_luma_transform_size_64_flag, |
| 123 | .sps_transform_skip_enabled_flag = sps->sps_transform_skip_enabled_flag, |
| 124 | .sps_bdpcm_enabled_flag = sps->sps_bdpcm_enabled_flag, |
| 125 | .sps_mts_enabled_flag = sps->sps_mts_enabled_flag, |
| 126 | .sps_explicit_mts_intra_enabled_flag = sps->sps_explicit_mts_intra_enabled_flag, |
| 127 | .sps_explicit_mts_inter_enabled_flag = sps->sps_explicit_mts_inter_enabled_flag, |
| 128 | .sps_lfnst_enabled_flag = sps->sps_lfnst_enabled_flag, |
| 129 | .sps_joint_cbcr_enabled_flag = sps->sps_joint_cbcr_enabled_flag, |
| 130 | .sps_same_qp_table_for_chroma_flag = sps->sps_same_qp_table_for_chroma_flag, |
| 131 | .sps_sao_enabled_flag = sps->sps_sao_enabled_flag, |
| 132 | .sps_alf_enabled_flag = sps->sps_alf_enabled_flag, |
| 133 | .sps_ccalf_enabled_flag = sps->sps_ccalf_enabled_flag, |
| 134 | .sps_lmcs_enabled_flag = sps->sps_lmcs_enabled_flag, |
| 135 | .sps_sbtmvp_enabled_flag = sps->sps_sbtmvp_enabled_flag, |
| 136 | .sps_amvr_enabled_flag = sps->sps_amvr_enabled_flag, |
| 137 | .sps_smvd_enabled_flag = sps->sps_smvd_enabled_flag, |
| 138 | .sps_mmvd_enabled_flag = sps->sps_mmvd_enabled_flag, |
| 139 | .sps_sbt_enabled_flag = sps->sps_sbt_enabled_flag, |
nothing calls this directly
no test coverage detected