mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-03-22 10:58:04 +00:00
vaapi_encode: Allocate picture-private data in generic code
This commit is contained in:
parent
8ca55a2b9e
commit
26ce3a43a3
@ -570,14 +570,23 @@ static int vaapi_encode_discard(AVCodecContext *avctx,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static VAAPIEncodePicture *vaapi_encode_alloc(void)
|
||||
static VAAPIEncodePicture *vaapi_encode_alloc(AVCodecContext *avctx)
|
||||
{
|
||||
VAAPIEncodeContext *ctx = avctx->priv_data;
|
||||
VAAPIEncodePicture *pic;
|
||||
|
||||
pic = av_mallocz(sizeof(*pic));
|
||||
if (!pic)
|
||||
return NULL;
|
||||
|
||||
if (ctx->codec->picture_priv_data_size > 0) {
|
||||
pic->priv_data = av_mallocz(ctx->codec->picture_priv_data_size);
|
||||
if (!pic->priv_data) {
|
||||
av_freep(&pic);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
pic->input_surface = VA_INVALID_ID;
|
||||
pic->recon_surface = VA_INVALID_ID;
|
||||
pic->output_buffer = VA_INVALID_ID;
|
||||
@ -710,7 +719,7 @@ static int vaapi_encode_get_next(AVCodecContext *avctx,
|
||||
}
|
||||
}
|
||||
|
||||
pic = vaapi_encode_alloc();
|
||||
pic = vaapi_encode_alloc(avctx);
|
||||
if (!pic)
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
@ -739,7 +748,7 @@ static int vaapi_encode_get_next(AVCodecContext *avctx,
|
||||
|
||||
for (i = 0; i < ctx->b_per_p &&
|
||||
ctx->gop_counter < ctx->gop_size; i++) {
|
||||
pic = vaapi_encode_alloc();
|
||||
pic = vaapi_encode_alloc(avctx);
|
||||
if (!pic)
|
||||
goto fail;
|
||||
|
||||
|
@ -268,6 +268,10 @@ typedef struct VAAPIEncodeType {
|
||||
// add any necessary global parameters).
|
||||
int (*configure)(AVCodecContext *avctx);
|
||||
|
||||
// The size of any private data structure associated with each
|
||||
// picture (can be zero if not required).
|
||||
size_t picture_priv_data_size;
|
||||
|
||||
// The size of the parameter structures:
|
||||
// sizeof(VAEnc{type}ParameterBuffer{codec}).
|
||||
size_t sequence_params_size;
|
||||
|
Loading…
Reference in New Issue
Block a user