26 #define OFFSET(x) offsetof(NvencContext, x)
27 #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
70 {
"rc",
"Override the preset rate-control",
OFFSET(rc),
AV_OPT_TYPE_INT, { .i64 = -1 }, -1, INT_MAX,
VE,
"rc" },
75 {
"ll_2pass_quality",
"Multi-pass optimized for image quality (only for low-latency presets)",
77 {
"ll_2pass_size",
"Multi-pass optimized for constant frame size (only for low-latency presets)",
80 {
"rc-lookahead",
"Number of frames to look ahead for rate-control",
82 {
"surfaces",
"Number of concurrent surfaces",
OFFSET(nb_surfaces),
AV_OPT_TYPE_INT, { .i64 = 32 }, 0, INT_MAX,
VE },
85 {
"gpu",
"Selects which NVENC capable GPU to use. First GPU is 0, second is 1, and so on.",
89 {
"delay",
"Delay frame output by the given amount of frames",
91 {
"no-scenecut",
"When lookahead is enabled, set this to 1 to disable adaptive I-frame insertion at scene cuts",
93 {
"forced-idr",
"If forcing keyframes, force them as IDR frames.",
97 {
"zerolatency",
"Set 1 to indicate zero latency operation (no reordering delay)",
99 {
"nonref_p",
"Set this to 1 to enable automatic insertion of non-reference P-frames",
101 {
"strict_gop",
"Set 1 to minimize GOP-to-GOP rate fluctuations",
103 {
"aq-strength",
"When Spatial AQ is enabled, this field is used to specify AQ strength. AQ strength scale is from 1 (low) - 15 (aggressive)",
105 {
"cq",
"Set target quality level (0 to 51, 0 means automatic) for constant quality mode in VBR rate control",
122 #if FF_API_NVENC_OLD_NAME
138 .
name =
"nvenc_hevc",
146 .priv_class = &nvenc_hevc_class,
147 .defaults = defaults,
163 .
name =
"hevc_nvenc",
171 .priv_class = &hevc_nvenc_class,
172 .defaults = defaults,
#define FF_CODEC_CAP_INIT_CLEANUP
The codec allows calling the close function for deallocation even if the init function returned a fai...
av_cold int ff_nvenc_encode_close(AVCodecContext *avctx)
#define AV_LOG_WARNING
Something somehow does not look correct.
#define LIBAVUTIL_VERSION_INT
static const AVCodecDefault defaults[]
static av_cold int nvenc_old_init(AVCodecContext *avctx)
const char * class_name
The name of the class; usually it is the same name as the context structure type to which the AVClass...
#define AV_CODEC_CAP_DELAY
Encoder or decoder requires flushing with NULL input at the end in order to give the complete and cor...
enum AVPixelFormat ff_nvenc_pix_fmts[]
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
static const AVClass hevc_nvenc_class
static const AVClass nvenc_hevc_class
Multi pass encoding optimized for maintaining frame size and works only with low latency mode...
const char * name
Name of the codec implementation.
AVCodec ff_hevc_nvenc_encoder
common internal API header
av_cold int ff_nvenc_encode_init(AVCodecContext *avctx)
int ff_nvenc_encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_packet)
Multi pass encoding optimized for image quality and works only with low latency mode.
Variable bitrate mode with MinQP.
Libavcodec external API header.
main external API structure.
Describe the class of an AVClass context structure.
static enum AVPixelFormat pix_fmts[]
common internal api header.
#define FF_PROFILE_HEVC_REXT
AVCodec ff_nvenc_hevc_encoder
static const AVOption options[]