+
+#define VAAPI_ENCODE_COMMON_OPTIONS \
+ { "low_power", \
+ "Use low-power encoding mode (only available on some platforms; " \
+ "may not support all encoding features)", \
+ OFFSET(common.low_power), AV_OPT_TYPE_BOOL, \
+ { .i64 = 0 }, 0, 1, FLAGS }, \
+ { "idr_interval", \
+ "Distance (in I-frames) between IDR frames", \
+ OFFSET(common.idr_interval), AV_OPT_TYPE_INT, \
+ { .i64 = 0 }, 0, INT_MAX, FLAGS }, \
+ { "b_depth", \
+ "Maximum B-frame reference depth", \
+ OFFSET(common.desired_b_depth), AV_OPT_TYPE_INT, \
+ { .i64 = 1 }, 1, INT_MAX, FLAGS }
+
+#define VAAPI_ENCODE_RC_MODE(name, desc) \
+ { #name, desc, 0, AV_OPT_TYPE_CONST, { .i64 = RC_MODE_ ## name }, \
+ 0, 0, FLAGS, "rc_mode" }
+#define VAAPI_ENCODE_RC_OPTIONS \
+ { "rc_mode",\
+ "Set rate control mode", \
+ OFFSET(common.explicit_rc_mode), AV_OPT_TYPE_INT, \
+ { .i64 = RC_MODE_AUTO }, RC_MODE_AUTO, RC_MODE_MAX, FLAGS, "rc_mode" }, \
+ { "auto", "Choose mode automatically based on other parameters", \
+ 0, AV_OPT_TYPE_CONST, { .i64 = RC_MODE_AUTO }, 0, 0, FLAGS, "rc_mode" }, \
+ VAAPI_ENCODE_RC_MODE(CQP, "Constant-quality"), \
+ VAAPI_ENCODE_RC_MODE(CBR, "Constant-bitrate"), \
+ VAAPI_ENCODE_RC_MODE(VBR, "Variable-bitrate"), \
+ VAAPI_ENCODE_RC_MODE(ICQ, "Intelligent constant-quality"), \
+ VAAPI_ENCODE_RC_MODE(QVBR, "Quality-defined variable-bitrate"), \
+ VAAPI_ENCODE_RC_MODE(AVBR, "Average variable-bitrate")
+
+