| 250 | } |
| 251 | |
| 252 | static int vaapi_vc1_start_frame(AVCodecContext *avctx, |
| 253 | av_unused const AVBufferRef *buffer_ref, |
| 254 | av_unused const uint8_t *buffer, |
| 255 | av_unused uint32_t size) |
| 256 | { |
| 257 | const VC1Context *v = avctx->priv_data; |
| 258 | const MpegEncContext *s = &v->s; |
| 259 | VAAPIDecodePicture *pic = s->cur_pic.ptr->hwaccel_picture_private; |
| 260 | VAPictureParameterBufferVC1 pic_param; |
| 261 | int err; |
| 262 | |
| 263 | pic->output_surface = ff_vaapi_get_surface_id(s->cur_pic.ptr->f); |
| 264 | |
| 265 | pic_param = (VAPictureParameterBufferVC1) { |
| 266 | .forward_reference_picture = VA_INVALID_ID, |
| 267 | .backward_reference_picture = VA_INVALID_ID, |
| 268 | .inloop_decoded_picture = VA_INVALID_ID, |
| 269 | .sequence_fields.bits = { |
| 270 | .pulldown = v->broadcast, |
| 271 | .interlace = v->interlace, |
| 272 | .tfcntrflag = v->tfcntrflag, |
| 273 | .finterpflag = v->finterpflag, |
| 274 | .psf = v->psf, |
| 275 | .multires = v->multires, |
| 276 | .overlap = v->overlap, |
| 277 | .syncmarker = v->resync_marker, |
| 278 | .rangered = v->rangered, |
| 279 | .max_b_frames = s->avctx->max_b_frames, |
| 280 | .profile = v->profile, |
| 281 | }, |
| 282 | .coded_width = s->avctx->coded_width, |
| 283 | .coded_height = s->avctx->coded_height, |
| 284 | .entrypoint_fields.bits = { |
| 285 | .broken_link = v->broken_link, |
| 286 | .closed_entry = v->closed_entry, |
| 287 | .panscan_flag = v->panscanflag, |
| 288 | .loopfilter = v->loop_filter, |
| 289 | }, |
| 290 | .conditional_overlap_flag = v->condover, |
| 291 | .fast_uvmc_flag = v->fastuvmc, |
| 292 | .range_mapping_fields.bits = { |
| 293 | .luma_flag = v->range_mapy_flag, |
| 294 | .luma = v->range_mapy, |
| 295 | .chroma_flag = v->range_mapuv_flag, |
| 296 | .chroma = v->range_mapuv, |
| 297 | }, |
| 298 | .b_picture_fraction = v->bfraction_lut_index, |
| 299 | .cbp_table = (v->fcm == PROGRESSIVE ? v->cbptab : v->icbptab), |
| 300 | .mb_mode_table = v->mbmodetab, |
| 301 | .range_reduction_frame = v->rangeredfrm, |
| 302 | .rounding_control = v->rnd, |
| 303 | .post_processing = v->postproc, |
| 304 | .picture_resolution_index = v->respic, |
| 305 | .picture_fields.bits = { |
| 306 | .picture_type = (v->fcm == ILACE_FIELD ? vc1_get_FPTYPE(v) : vc1_get_PTYPE(v)), |
| 307 | .frame_coding_mode = v->fcm, |
| 308 | .top_field_first = v->tff, |
| 309 | .is_first_field = !v->second_field, |
nothing calls this directly
no test coverage detected