avcodec/vaapi_encode: extract a free funtion to base layer

Signed-off-by: Tong Wu <tong1.wu@intel.com>
This commit is contained in:
Tong Wu 2024-02-19 22:09:11 +08:00 committed by Lynne
parent 6403ad77e3
commit fc25b7866a
3 changed files with 14 additions and 5 deletions

View File

@ -745,6 +745,17 @@ fail:
return err;
}
int ff_hw_base_encode_free(FFHWBaseEncodePicture *pic)
{
av_frame_free(&pic->input_image);
av_frame_free(&pic->recon_image);
av_buffer_unref(&pic->opaque_ref);
av_freep(&pic->priv_data);
return 0;
}
int ff_hw_base_encode_init(AVCodecContext *avctx)
{
FFHWBaseEncodeContext *ctx = avctx->priv_data;

View File

@ -224,6 +224,8 @@ int ff_hw_base_init_gop_structure(AVCodecContext *avctx, uint32_t ref_l0, uint32
int ff_hw_base_get_recon_format(AVCodecContext *avctx, const void *hwconfig, enum AVPixelFormat *fmt);
int ff_hw_base_encode_free(FFHWBaseEncodePicture *pic);
int ff_hw_base_encode_init(AVCodecContext *avctx);
int ff_hw_base_encode_close(AVCodecContext *avctx);

View File

@ -878,17 +878,13 @@ static int vaapi_encode_free(AVCodecContext *avctx,
av_freep(&pic->slices[i].codec_slice_params);
}
av_frame_free(&base_pic->input_image);
av_frame_free(&base_pic->recon_image);
av_buffer_unref(&base_pic->opaque_ref);
ff_hw_base_encode_free(base_pic);
av_freep(&pic->param_buffers);
av_freep(&pic->slices);
// Output buffer should already be destroyed.
av_assert0(pic->output_buffer == VA_INVALID_ID);
av_freep(&base_pic->priv_data);
av_freep(&pic->codec_picture_params);
av_freep(&pic->roi);