You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-07-16 22:42:38 +02:00
nvenc: Add some easier to understand presets that match x264 terminology
Signed-off-by: Luca Barbato <lu_zero@gentoo.org> Signed-off-by: Diego Biurrun <diego@biurrun.de> Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
This commit is contained in:
committed by
Luca Barbato
parent
352741b5ea
commit
e02e2515b2
@ -459,8 +459,10 @@ typedef struct GUIDTuple {
|
|||||||
int flags;
|
int flags;
|
||||||
} GUIDTuple;
|
} GUIDTuple;
|
||||||
|
|
||||||
#define PRESET(name, ...) \
|
#define PRESET_ALIAS(alias, name, ...) \
|
||||||
[PRESET_ ## name] = { NV_ENC_PRESET_ ## name ## _GUID, __VA_ARGS__ }
|
[PRESET_ ## alias] = { NV_ENC_PRESET_ ## name ## _GUID, __VA_ARGS__ }
|
||||||
|
|
||||||
|
#define PRESET(name, ...) PRESET_ALIAS(name, name, __VA_ARGS__)
|
||||||
|
|
||||||
static int nvec_map_preset(NVENCContext *ctx)
|
static int nvec_map_preset(NVENCContext *ctx)
|
||||||
{
|
{
|
||||||
@ -474,6 +476,9 @@ static int nvec_map_preset(NVENCContext *ctx)
|
|||||||
PRESET(LOW_LATENCY_HQ, NVENC_LOWLATENCY),
|
PRESET(LOW_LATENCY_HQ, NVENC_LOWLATENCY),
|
||||||
PRESET(LOSSLESS_DEFAULT, NVENC_LOSSLESS),
|
PRESET(LOSSLESS_DEFAULT, NVENC_LOSSLESS),
|
||||||
PRESET(LOSSLESS_HP, NVENC_LOSSLESS),
|
PRESET(LOSSLESS_HP, NVENC_LOSSLESS),
|
||||||
|
PRESET_ALIAS(SLOW, HQ, NVENC_TWO_PASSES),
|
||||||
|
PRESET_ALIAS(MEDIUM, HQ, NVENC_ONE_PASS),
|
||||||
|
PRESET_ALIAS(FAST, HP, NVENC_ONE_PASS),
|
||||||
{ { 0 } }
|
{ { 0 } }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -486,6 +491,7 @@ static int nvec_map_preset(NVENCContext *ctx)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#undef PRESET
|
#undef PRESET
|
||||||
|
#undef PRESET_ALIAS
|
||||||
|
|
||||||
static void set_constqp(AVCodecContext *avctx, NV_ENC_RC_PARAMS *rc)
|
static void set_constqp(AVCodecContext *avctx, NV_ENC_RC_PARAMS *rc)
|
||||||
{
|
{
|
||||||
|
@ -91,6 +91,9 @@ typedef struct NVENCLibraryContext
|
|||||||
|
|
||||||
enum {
|
enum {
|
||||||
PRESET_DEFAULT,
|
PRESET_DEFAULT,
|
||||||
|
PRESET_SLOW,
|
||||||
|
PRESET_MEDIUM,
|
||||||
|
PRESET_FAST,
|
||||||
PRESET_HP,
|
PRESET_HP,
|
||||||
PRESET_HQ,
|
PRESET_HQ,
|
||||||
PRESET_BD ,
|
PRESET_BD ,
|
||||||
@ -111,7 +114,9 @@ enum {
|
|||||||
|
|
||||||
enum {
|
enum {
|
||||||
NVENC_LOWLATENCY = 1,
|
NVENC_LOWLATENCY = 1,
|
||||||
NVENC_LOSSLESS,
|
NVENC_LOSSLESS = 2,
|
||||||
|
NVENC_ONE_PASS = 4,
|
||||||
|
NVENC_TWO_PASSES = 8,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
@ -27,8 +27,11 @@
|
|||||||
#define OFFSET(x) offsetof(NVENCContext, x)
|
#define OFFSET(x) offsetof(NVENCContext, x)
|
||||||
#define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
|
#define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
|
||||||
static const AVOption options[] = {
|
static const AVOption options[] = {
|
||||||
{ "preset", "Set the encoding preset", OFFSET(preset), AV_OPT_TYPE_INT, { .i64 = PRESET_HQ }, PRESET_DEFAULT, PRESET_LOSSLESS_HP, VE, "preset" },
|
{ "preset", "Set the encoding preset", OFFSET(preset), AV_OPT_TYPE_INT, { .i64 = PRESET_MEDIUM }, PRESET_DEFAULT, PRESET_LOSSLESS_HP, VE, "preset" },
|
||||||
{ "default", "", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_DEFAULT }, 0, 0, VE, "preset" },
|
{ "default", "", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_DEFAULT }, 0, 0, VE, "preset" },
|
||||||
|
{ "slow", "hq 2 passes", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_SLOW }, 0, 0, VE, "preset" },
|
||||||
|
{ "medium", "hq 1 pass", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_MEDIUM }, 0, 0, VE, "preset" },
|
||||||
|
{ "fast", "hp 1 pass", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_FAST }, 0, 0, VE, "preset" },
|
||||||
{ "hp", "", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_HP }, 0, 0, VE, "preset" },
|
{ "hp", "", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_HP }, 0, 0, VE, "preset" },
|
||||||
{ "hq", "", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_HQ }, 0, 0, VE, "preset" },
|
{ "hq", "", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_HQ }, 0, 0, VE, "preset" },
|
||||||
{ "bd", "", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_BD }, 0, 0, VE, "preset" },
|
{ "bd", "", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_BD }, 0, 0, VE, "preset" },
|
||||||
|
@ -27,8 +27,11 @@
|
|||||||
#define OFFSET(x) offsetof(NVENCContext, x)
|
#define OFFSET(x) offsetof(NVENCContext, x)
|
||||||
#define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
|
#define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
|
||||||
static const AVOption options[] = {
|
static const AVOption options[] = {
|
||||||
{ "preset", "Set the encoding preset", OFFSET(preset), AV_OPT_TYPE_INT, { .i64 = PRESET_HQ }, PRESET_DEFAULT, PRESET_LOSSLESS_HP, VE, "preset" },
|
{ "preset", "Set the encoding preset", OFFSET(preset), AV_OPT_TYPE_INT, { .i64 = PRESET_MEDIUM }, PRESET_DEFAULT, PRESET_LOSSLESS_HP, VE, "preset" },
|
||||||
{ "default", "", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_DEFAULT }, 0, 0, VE, "preset" },
|
{ "default", "", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_DEFAULT }, 0, 0, VE, "preset" },
|
||||||
|
{ "slow", "hq 2 passes", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_SLOW }, 0, 0, VE, "preset" },
|
||||||
|
{ "medium", "hq 1 pass", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_MEDIUM }, 0, 0, VE, "preset" },
|
||||||
|
{ "fast", "hp 1 pass", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_FAST }, 0, 0, VE, "preset" },
|
||||||
{ "hp", "", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_HP }, 0, 0, VE, "preset" },
|
{ "hp", "", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_HP }, 0, 0, VE, "preset" },
|
||||||
{ "hq", "", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_HQ }, 0, 0, VE, "preset" },
|
{ "hq", "", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_HQ }, 0, 0, VE, "preset" },
|
||||||
{ "bd", "", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_BD }, 0, 0, VE, "preset" },
|
{ "bd", "", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_BD }, 0, 0, VE, "preset" },
|
||||||
|
Reference in New Issue
Block a user