diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c index b1f00695c7..c80e638cad 100644 --- a/libavcodec/vaapi_encode.c +++ b/libavcodec/vaapi_encode.c @@ -905,6 +905,7 @@ av_cold int ff_vaapi_encode_init(AVCodecContext *avctx, } ctx->codec = type; + ctx->codec_options = ctx->codec_options_data; ctx->priv_data = av_mallocz(type->priv_data_size); if (!ctx->priv_data) { diff --git a/libavcodec/vaapi_encode.h b/libavcodec/vaapi_encode.h index 9716578e5a..ec552dad0a 100644 --- a/libavcodec/vaapi_encode.h +++ b/libavcodec/vaapi_encode.h @@ -172,6 +172,11 @@ typedef struct VAAPIEncodeContext { int p_counter; int end_of_stream; + // Codec-local options are allocated to follow this structure in + // memory (in the AVCodec definition, set priv_data_size to + // sizeof(VAAPIEncodeContext) + sizeof(VAAPIEncodeFooOptions)). + void *codec_options; + char codec_options_data[0]; } VAAPIEncodeContext;