X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fvaapi_encode.h;h=b67168b1ef8f0b06ed52f6cf9b6218ae59f86500;hb=dd4fb2339f76a958bd7e63e5ac18b8c10852ae1a;hp=ceab4160d2459d400156621c16370afc846d500b;hpb=bc3d2f25783a4f61b7018800a12182dc46ff8325;p=ffmpeg diff --git a/libavcodec/vaapi_encode.h b/libavcodec/vaapi_encode.h index ceab4160d24..b67168b1ef8 100644 --- a/libavcodec/vaapi_encode.h +++ b/libavcodec/vaapi_encode.h @@ -32,6 +32,8 @@ struct VAAPIEncodeType; struct VAAPIEncodePicture; enum { + MAX_CONFIG_ATTRIBUTES = 4, + MAX_GLOBAL_PARAMS = 4, MAX_PICTURE_REFERENCES = 2, MAX_PICTURE_SLICES = 1, MAX_PARAM_BUFFERS = 16, @@ -128,15 +130,19 @@ typedef struct VAAPIEncodeContext { AVBufferRef *recon_frames_ref; AVHWFramesContext *recon_frames; - VAConfigAttrib *config_attributes; + VAConfigAttrib config_attributes[MAX_CONFIG_ATTRIBUTES]; int nb_config_attributes; + VAEncMiscParameterBuffer *global_params[MAX_GLOBAL_PARAMS]; + size_t global_params_size[MAX_GLOBAL_PARAMS]; + int nb_global_params; + // Per-sequence parameter structure (VAEncSequenceParameterBuffer*). void *codec_sequence_params; // Per-sequence parameters found in the per-picture parameter // structure (VAEncPictureParameterBuffer*). - void *codec_picture_params; + void *codec_picture_params; // Current encoding window, in display (input) order. VAAPIEncodePicture *pic_start, *pic_end; @@ -166,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;