- struct MpegEncContext * const s = avctx->priv_data;
- struct vaapi_context * const vactx = avctx->hwaccel_context;
- VAPictureParameterBufferMPEG2 *pic_param;
- VAIQMatrixBufferMPEG2 *iq_matrix;
- int i;
-
- av_dlog(avctx, "vaapi_mpeg2_start_frame()\n");
-
- vactx->slice_param_size = sizeof(VASliceParameterBufferMPEG2);
-
- /* Fill in VAPictureParameterBufferMPEG2 */
- pic_param = ff_vaapi_alloc_pic_param(vactx, sizeof(VAPictureParameterBufferMPEG2));
- if (!pic_param)
- return -1;
- pic_param->horizontal_size = s->width;
- pic_param->vertical_size = s->height;
- pic_param->forward_reference_picture = VA_INVALID_ID;
- pic_param->backward_reference_picture = VA_INVALID_ID;
- pic_param->picture_coding_type = s->pict_type;
- pic_param->f_code = mpeg2_get_f_code(s);
- pic_param->picture_coding_extension.value = 0; /* reset all bits */
- pic_param->picture_coding_extension.bits.intra_dc_precision = s->intra_dc_precision;
- pic_param->picture_coding_extension.bits.picture_structure = s->picture_structure;
- pic_param->picture_coding_extension.bits.top_field_first = s->top_field_first;
- pic_param->picture_coding_extension.bits.frame_pred_frame_dct = s->frame_pred_frame_dct;
- pic_param->picture_coding_extension.bits.concealment_motion_vectors = s->concealment_motion_vectors;
- pic_param->picture_coding_extension.bits.q_scale_type = s->q_scale_type;
- pic_param->picture_coding_extension.bits.intra_vlc_format = s->intra_vlc_format;
- pic_param->picture_coding_extension.bits.alternate_scan = s->alternate_scan;
- pic_param->picture_coding_extension.bits.repeat_first_field = s->repeat_first_field;
- pic_param->picture_coding_extension.bits.progressive_frame = s->progressive_frame;
- pic_param->picture_coding_extension.bits.is_first_field = mpeg2_get_is_frame_start(s);
+ const MpegEncContext *s = avctx->priv_data;
+ VAAPIDecodePicture *pic = s->current_picture_ptr->hwaccel_picture_private;
+ VAPictureParameterBufferMPEG2 pic_param;
+ VAIQMatrixBufferMPEG2 iq_matrix;
+ int i, err;
+
+ pic->output_surface = ff_vaapi_get_surface_id(s->current_picture_ptr->f);
+
+ pic_param = (VAPictureParameterBufferMPEG2) {
+ .horizontal_size = s->width,
+ .vertical_size = s->height,
+ .forward_reference_picture = VA_INVALID_ID,
+ .backward_reference_picture = VA_INVALID_ID,
+ .picture_coding_type = s->pict_type,
+ .f_code = mpeg2_get_f_code(s),
+ .picture_coding_extension.bits = {
+ .intra_dc_precision = s->intra_dc_precision,
+ .picture_structure = s->picture_structure,
+ .top_field_first = s->top_field_first,
+ .frame_pred_frame_dct = s->frame_pred_frame_dct,
+ .concealment_motion_vectors = s->concealment_motion_vectors,
+ .q_scale_type = s->q_scale_type,
+ .intra_vlc_format = s->intra_vlc_format,
+ .alternate_scan = s->alternate_scan,
+ .repeat_first_field = s->repeat_first_field,
+ .progressive_frame = s->progressive_frame,
+ .is_first_field = mpeg2_get_is_frame_start(s),
+ },
+ };