#define NVENC_HAVE_GETLASTERRORSTRING
#endif
+// SDK 10.0 compile time feature checks
+#if NVENCAPI_CHECK_VERSION(10, 0)
+#define NVENC_HAVE_NEW_PRESETS
+#define NVENC_HAVE_MULTIPASS
+#define NVENC_HAVE_LDKFS
+#define NVENC_HAVE_H264_LVL6
+#endif
+
typedef struct NvencSurface
{
NV_ENC_INPUT_PTR input_surface;
NV_ENC_OUTPUT_PTR output_surface;
NV_ENC_BUFFER_FORMAT format;
- int size;
} NvencSurface;
typedef struct NvencDynLoadFunctions
PRESET_LOW_LATENCY_DEFAULT ,
PRESET_LOW_LATENCY_HQ ,
PRESET_LOW_LATENCY_HP,
- PRESET_LOSSLESS_DEFAULT, // lossless presets must be the last ones
+ PRESET_LOSSLESS_DEFAULT,
PRESET_LOSSLESS_HP,
+#ifdef NVENC_HAVE_NEW_PRESETS
+ PRESET_P1,
+ PRESET_P2,
+ PRESET_P3,
+ PRESET_P4,
+ PRESET_P5,
+ PRESET_P6,
+ PRESET_P7,
+#endif
};
enum {
NVENC_LOSSLESS = 2,
NVENC_ONE_PASS = 4,
NVENC_TWO_PASSES = 8,
+
+ NVENC_DEPRECATED_PRESET = 0x8000,
};
enum {
int a53_cc;
int s12m_tc;
int dpb_size;
+ int tuning_info;
+ int multipass;
+ int ldkfs;
} NvencContext;
int ff_nvenc_encode_init(AVCodecContext *avctx);
void ff_nvenc_encode_flush(AVCodecContext *avctx);
extern const enum AVPixelFormat ff_nvenc_pix_fmts[];
-extern const AVCodecHWConfigInternal *ff_nvenc_hw_configs[];
+extern const AVCodecHWConfigInternal *const ff_nvenc_hw_configs[];
#endif /* AVCODEC_NVENC_H */