This commit adds support for Ultra High Quality mode for AV1 on NVIDIA GPUs.
Unified · Split
| @@ -97,6 +97,7 @@ typedef void ID3D11Device; · 96 unmodified lines | ||
| 97 | 97 | #if NVENCAPI_CHECK_VERSION(13, 0) |
| 98 | 98 | #define NVENC_HAVE_H264_10BIT_SUPPORT |
| 99 | 99 | #define NVENC_HAVE_422_SUPPORT |
| 100 | +#define NVENC_HAVE_AV1_UHQ_TUNING | |
| 100 | 101 | #endif |
| 101 | 102 | |
| 102 | 103 | typedef struct NvencSurface |
| @@ -38,8 +38,11 @@ static const AVOption options[] = { · 37 unmodified lines | ||
| 38 | 38 | { "p5", "slow (good quality)", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_P5 }, 0, 0, VE, .unit = "preset" }, |
| 39 | 39 | { "p6", "slower (better quality)", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_P6 }, 0, 0, VE, .unit = "preset" }, |
| 40 | 40 | { "p7", "slowest (best quality)", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_P7 }, 0, 0, VE, .unit = "preset" }, |
| 41 | − { "tune", "Set the encoding tuning info", OFFSET(tuning_info), AV_OPT_TYPE_INT, { .i64 = NV_ENC_TUNING_INFO_HIGH_QUALITY }, NV_ENC_TUNING_INFO_HIGH_QUALITY, NV_ENC_TUNING_INFO_LOSSLESS, VE, .unit = "tune" }, | |
| 41 | + { "tune", "Set the encoding tuning info", OFFSET(tuning_info), AV_OPT_TYPE_INT, { .i64 = NV_ENC_TUNING_INFO_HIGH_QUALITY }, NV_ENC_TUNING_INFO_HIGH_QUALITY, NV_ENC_TUNING_INFO_COUNT - 1, VE, .unit = "tune" }, | |
| 42 | 42 | { "hq", "High quality", 0, AV_OPT_TYPE_CONST, { .i64 = NV_ENC_TUNING_INFO_HIGH_QUALITY }, 0, 0, VE, .unit = "tune" }, |
| 43 | +#ifdef NVENC_HAVE_AV1_UHQ_TUNING | |
| 44 | + { "uhq", "Ultra high quality", 0, AV_OPT_TYPE_CONST, { .i64 = NV_ENC_TUNING_INFO_ULTRA_HIGH_QUALITY }, 0, 0, VE, .unit = "tune" }, | |
| 45 | +#endif | |
| 43 | 46 | { "ll", "Low latency", 0, AV_OPT_TYPE_CONST, { .i64 = NV_ENC_TUNING_INFO_LOW_LATENCY }, 0, 0, VE, .unit = "tune" }, |
| 44 | 47 | { "ull", "Ultra low latency", 0, AV_OPT_TYPE_CONST, { .i64 = NV_ENC_TUNING_INFO_ULTRA_LOW_LATENCY }, 0, 0, VE, .unit = "tune" }, |
| 45 | 48 | { "lossless", "Lossless", 0, AV_OPT_TYPE_CONST, { .i64 = NV_ENC_TUNING_INFO_LOSSLESS }, 0, 0, VE, .unit = "tune" }, |