From fc4c27c4edfc6a5f9bc7c696e823652474a65ce8 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sun, 8 Nov 2015 07:58:49 +0100 Subject: qsvenc: expose additional encoding options --- libavcodec/qsvenc.h | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'libavcodec/qsvenc.h') diff --git a/libavcodec/qsvenc.h b/libavcodec/qsvenc.h index 3935deb994..ec0c4df1e6 100644 --- a/libavcodec/qsvenc.h +++ b/libavcodec/qsvenc.h @@ -38,6 +38,8 @@ #define QSV_HAVE_CO3 QSV_VERSION_ATLEAST(1, 11) #define QSV_HAVE_TRELLIS QSV_VERSION_ATLEAST(1, 8) +#define QSV_HAVE_MAX_SLICE_SIZE QSV_VERSION_ATLEAST(1, 9) +#define QSV_HAVE_BREF_TYPE QSV_VERSION_ATLEAST(1, 8) #define QSV_HAVE_LA QSV_VERSION_ATLEAST(1, 7) #define QSV_HAVE_LA_HRD QSV_VERSION_ATLEAST(1, 11) @@ -55,6 +57,14 @@ { "slow", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = MFX_TARGETUSAGE_BEST_QUALITY }, INT_MIN, INT_MAX, VE, "preset" }, \ { "la_depth", "Number of frames to analyze before encoding.", OFFSET(qsv.la_depth), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, INT16_MAX, VE }, \ { "vcm", "Use the video conferencing mode ratecontrol", OFFSET(qsv.vcm), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, VE }, \ +{ "rdo", "Enable rate distortion optimization", OFFSET(qsv.rdo), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1, VE }, \ +{ "max_frame_size", "Maximum encoded frame size in bytes", OFFSET(qsv.max_frame_size), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, UINT16_MAX, VE }, \ +{ "max_slice_size", "Maximum encoded slice size in bytes", OFFSET(qsv.max_slice_size), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, UINT16_MAX, VE }, \ +{ "bitrate_limit", "Toggle bitrate limitations", OFFSET(qsv.bitrate_limit), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1, VE }, \ +{ "mbbrc", "MB level bitrate control", OFFSET(qsv.mbbrc), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1, VE }, \ +{ "extbrc", "Extended bitrate control", OFFSET(qsv.extbrc), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1, VE }, \ +{ "adaptive_i", "Adaptive I-frame placement", OFFSET(qsv.adaptive_i), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1, VE }, \ +{ "adaptive_b", "Adaptive B-frame placement", OFFSET(qsv.adaptive_b), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1, VE }, \ typedef struct QSVEncContext { AVCodecContext *avctx; @@ -95,6 +105,24 @@ typedef struct QSVEncContext { int avbr_convergence; int la_depth; int vcm; + int rdo; + int max_frame_size; + int max_slice_size; + + int single_sei_nal_unit; + int max_dec_frame_buffering; + int trellis; + + int bitrate_limit; + int mbbrc; + int extbrc; + int adaptive_i; + int adaptive_b; + + int int_ref_type; + int int_ref_cycle_size; + int int_ref_qp_delta; + int recovery_point_sei; char *load_plugins; } QSVEncContext; -- cgit v1.2.3