19 #ifndef AVCODEC_VAAPI_ENCODE_H 20 #define AVCODEC_VAAPI_ENCODE_H 26 #if VA_CHECK_VERSION(1, 0, 0) 27 #include <va/va_str.h> 75 #if VA_CHECK_VERSION(1, 0, 0) 266 #if VA_CHECK_VERSION(0, 36, 0) 267 VAEncMiscParameterBufferQualityLevel quality_params;
394 char *
data,
size_t *data_len);
397 char *
data,
size_t *data_len);
401 char *
data,
size_t *data_len);
410 char *
data,
size_t *data_len);
418 char *
data,
size_t *data_len);
429 #define VAAPI_ENCODE_COMMON_OPTIONS \ 431 "Use low-power encoding mode (only available on some platforms; " \ 432 "may not support all encoding features)", \ 433 OFFSET(common.low_power), AV_OPT_TYPE_BOOL, \ 434 { .i64 = 0 }, 0, 1, FLAGS }, \ 436 "Distance (in I-frames) between IDR frames", \ 437 OFFSET(common.idr_interval), AV_OPT_TYPE_INT, \ 438 { .i64 = 0 }, 0, INT_MAX, FLAGS }, \ 440 "Maximum B-frame reference depth", \ 441 OFFSET(common.desired_b_depth), AV_OPT_TYPE_INT, \ 442 { .i64 = 1 }, 1, INT_MAX, FLAGS } 444 #define VAAPI_ENCODE_RC_MODE(name, desc) \ 445 { #name, desc, 0, AV_OPT_TYPE_CONST, { .i64 = RC_MODE_ ## name }, \ 446 0, 0, FLAGS, "rc_mode" } 447 #define VAAPI_ENCODE_RC_OPTIONS \ 449 "Set rate control mode", \ 450 OFFSET(common.explicit_rc_mode), AV_OPT_TYPE_INT, \ 451 { .i64 = RC_MODE_AUTO }, RC_MODE_AUTO, RC_MODE_MAX, FLAGS, "rc_mode" }, \ 452 { "auto", "Choose mode automatically based on other parameters", \ 453 0, AV_OPT_TYPE_CONST, { .i64 = RC_MODE_AUTO }, 0, 0, FLAGS, "rc_mode" }, \ 454 VAAPI_ENCODE_RC_MODE(CQP, "Constant-quality"), \ 455 VAAPI_ENCODE_RC_MODE(CBR, "Constant-bitrate"), \ 456 VAAPI_ENCODE_RC_MODE(VBR, "Variable-bitrate"), \ 457 VAAPI_ENCODE_RC_MODE(ICQ, "Intelligent constant-quality"), \ 458 VAAPI_ENCODE_RC_MODE(QVBR, "Quality-defined variable-bitrate"), \ 459 VAAPI_ENCODE_RC_MODE(AVBR, "Average variable-bitrate") This struct aggregates all the (hardware/vendor-specific) "high-level" state, i.e.
VASurfaceID input_surface
This structure describes decoded (raw) audio or video data.
VAEntrypoint va_entrypoint
void * codec_sequence_params
AVBufferRef * input_frames_ref
size_t picture_params_size
AVHWDeviceContext * device
API-specific header for AV_HWDEVICE_TYPE_VAAPI.
unsigned int va_packed_headers
const VAAPIEncodeRCMode * rc_mode
AVBufferRef * output_buffer_ref
VABufferID * param_buffers
struct VAAPIEncodePicture * prev
VASurfaceID recon_surface
int ff_vaapi_encode_init(AVCodecContext *avctx)
AVHWFramesContext * input_frames
const AVCodecHWConfigInternal * ff_vaapi_encode_hw_configs[]
int ff_vaapi_encode_close(AVCodecContext *avctx)
void * codec_picture_params
AVHWFramesContext * recon_frames
VAAPIEncodeSlice * slices
const VAAPIEncodeProfile * profile
const VAAPIEncodeProfile * profiles
VAEncMiscParameterRateControl rc_params
VAAPIEncodePicture * next_prev
struct VAAPIEncodePicture * next
void * codec_picture_params
AVBufferPool * output_buffer_pool
int ff_vaapi_encode_send_frame(AVCodecContext *avctx, const AVFrame *frame)
struct VAAPIEncodePicture * refs[MAX_PICTURE_REFERENCES]
const struct VAAPIEncodeType * codec
Libavcodec external API header.
VAAPIEncodePicture * pic_start
main external API structure.
Describe the class of an AVClass context structure.
This struct describes a set or pool of "hardware" frames (i.e.
AVBufferRef * recon_frames_ref
size_t picture_priv_data_size
A reference to a data buffer.
size_t sequence_params_size
VAEncMiscParameterHRD hrd_params
int ff_vaapi_encode_receive_packet(AVCodecContext *avctx, AVPacket *pkt)
VAEncMiscParameterFrameRate fr_params
void * codec_slice_params
VAAPI connection details.
unsigned int desired_packed_headers
This structure stores compressed data.
struct VAAPIEncodePicture * dpb[MAX_DPB_SIZE]
AVVAAPIDeviceContext * hwctx