summaryrefslogtreecommitdiff
path: root/libavcodec/qsvenc.h
diff options
context:
space:
mode:
authorHendrik Leppkes <h.leppkes@gmail.com>2015-11-29 15:22:53 +0100
committerHendrik Leppkes <h.leppkes@gmail.com>2015-11-29 15:22:53 +0100
commit5bc9c7a6db1caaae2bbc2061f16af28695a6fdd6 (patch)
treeaa392fc97221a53e8308d8a6277a482c88bf44c1 /libavcodec/qsvenc.h
parent24563c20f181cb9d7015e9595d9cb6846cf02dfa (diff)
parentfc4c27c4edfc6a5f9bc7c696e823652474a65ce8 (diff)
Merge commit 'fc4c27c4edfc6a5f9bc7c696e823652474a65ce8'
* commit 'fc4c27c4edfc6a5f9bc7c696e823652474a65ce8': qsvenc: expose additional encoding options Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
Diffstat (limited to 'libavcodec/qsvenc.h')
-rw-r--r--libavcodec/qsvenc.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/libavcodec/qsvenc.h b/libavcodec/qsvenc.h
index 4c0f5a5efa..2fe46b0415 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)
@@ -58,6 +60,14 @@
{ "slower", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = MFX_TARGETUSAGE_2 }, INT_MIN, INT_MAX, VE, "preset" }, \
{ "veryslow", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = MFX_TARGETUSAGE_BEST_QUALITY }, INT_MIN, INT_MAX, VE, "preset" }, \
{ "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;
@@ -102,6 +112,24 @@ typedef struct QSVEncContext {
int look_ahead_depth;
int look_ahead_downsampling;
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;