History

hw_base_encode: refactor picture allocation/freeing

This commit cleans up and refactors the mess of private state upon private state that used to be. Now, FFHWBaseEncodePicture is fully initialized upon call-time, and, most importantly, this lets APIs which require initialization data for frames (VkImageViews) to initialize this for both the input image, and the reconstruction (DPB) image.

Lynne committed 2 years ago

Commit 9db68ed1 parent fdf802514 files · +201 −211Browse files

Showing the changes to libavcodec/vaapi_encode_mpeg2.c (1 of 14 files). Show all

Unified · Split

libavcodec/vaapi_encode_mpeg2.c+7−8
@@ -141,7 +141,7 @@ fail: · 140 unmodified lines
141141 }
142142
143143 static int vaapi_encode_mpeg2_write_picture_header(AVCodecContext *avctx,
144− VAAPIEncodePicture *pic,
144+ FFHWBaseEncodePicture *pic,
145145 char *data, size_t *data_len)
146146 {
147147 VAAPIEncodeMPEG2Context *priv = avctx->priv_data;
@@ -418,10 +418,10 @@ static int vaapi_encode_mpeg2_init_sequence_params(AVCodecContext *avctx) · 270 unmodified lines
418418 }
419419
420420 static int vaapi_encode_mpeg2_init_picture_params(AVCodecContext *avctx,
421− VAAPIEncodePicture *vaapi_pic)
421+ FFHWBaseEncodePicture *pic)
422422 {
423423 VAAPIEncodeMPEG2Context *priv = avctx->priv_data;
424− const FFHWBaseEncodePicture *pic = &vaapi_pic->base;
424+ VAAPIEncodePicture *vaapi_pic = pic->priv;
425425 MPEG2RawPictureHeader *ph = &priv->picture_header;
426426 MPEG2RawPictureCodingExtension *pce = &priv->picture_coding_extension.data.picture_coding;
427427 VAEncPictureParameterBufferMPEG2 *vpic = vaapi_pic->codec_picture_params;
@@ -460,12 +460,12 @@ static int vaapi_encode_mpeg2_init_picture_params(AVCodecContext *avctx, · 32 unmodified lines
460460 break;
461461 case FF_HW_PICTURE_TYPE_P:
462462 vpic->picture_type = VAEncPictureTypePredictive;
463− vpic->forward_reference_picture = ((VAAPIEncodePicture *)pic->refs[0][0])->recon_surface;
463+ vpic->forward_reference_picture = ((VAAPIEncodePicture *)pic->refs[0][0]->priv)->recon_surface;
464464 break;
465465 case FF_HW_PICTURE_TYPE_B:
466466 vpic->picture_type = VAEncPictureTypeBidirectional;
467− vpic->forward_reference_picture = ((VAAPIEncodePicture *)pic->refs[0][0])->recon_surface;
468− vpic->backward_reference_picture = ((VAAPIEncodePicture *)pic->refs[1][0])->recon_surface;
467+ vpic->forward_reference_picture = ((VAAPIEncodePicture *)pic->refs[0][0]->priv)->recon_surface;
468+ vpic->backward_reference_picture = ((VAAPIEncodePicture *)pic->refs[1][0]->priv)->recon_surface;
469469 break;
470470 default:
471471 av_assert0(0 && "invalid picture type");
@@ -481,10 +481,9 @@ static int vaapi_encode_mpeg2_init_picture_params(AVCodecContext *avctx, · 9 unmodified lines
481481 }
482482
483483 static int vaapi_encode_mpeg2_init_slice_params(AVCodecContext *avctx,
484− VAAPIEncodePicture *vaapi_pic,
484+ FFHWBaseEncodePicture *pic,
485485 VAAPIEncodeSlice *slice)
486486 {
487− const FFHWBaseEncodePicture *pic = &vaapi_pic->base;
488487 VAAPIEncodeMPEG2Context *priv = avctx->priv_data;
489488 VAEncSliceParameterBufferMPEG2 *vslice = slice->codec_slice_params;
490489 int qp;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t