X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fnvenc.h;h=6bdf4741fa087848fdd7aab0b4740ccc78d47169;hb=1dff97b7bc792267c3e79030fbaed0e9fefc65fb;hp=ddd6168409093ee75382d42354d521244959db86;hpb=2ac399d7faa5ac80088715780769522d1141b549;p=ffmpeg diff --git a/libavcodec/nvenc.h b/libavcodec/nvenc.h index ddd61684090..6bdf4741fa0 100644 --- a/libavcodec/nvenc.h +++ b/libavcodec/nvenc.h @@ -33,6 +33,7 @@ typedef void ID3D11Device; #include "compat/cuda/dynlink_loader.h" #include "libavutil/fifo.h" #include "libavutil/opt.h" +#include "hwconfig.h" #include "avcodec.h" @@ -54,6 +55,13 @@ typedef void ID3D11Device; #define NVENC_HAVE_HEVC_BFRAME_REF_MODE #endif +// SDK 9.1 compile time feature checks +#if NVENCAPI_CHECK_VERSION(9, 1) +#define NVENC_HAVE_MULTIPLE_REF_FRAMES +#define NVENC_HAVE_CUSTREAM_PTR +#define NVENC_HAVE_GETLASTERRORSTRING +#endif + typedef struct NvencSurface { NV_ENC_INPUT_PTR input_surface; @@ -127,6 +135,7 @@ typedef struct NvencContext NV_ENC_CONFIG encode_config; CUcontext cu_context; CUcontext cu_context_internal; + CUstream cu_stream; ID3D11Device *d3d11_device; int nb_surfaces; @@ -192,6 +201,7 @@ typedef struct NvencContext int coder; int b_ref_mode; int a53_cc; + int dpb_size; } NvencContext; int ff_nvenc_encode_init(AVCodecContext *avctx); @@ -205,6 +215,9 @@ int ff_nvenc_receive_packet(AVCodecContext *avctx, AVPacket *pkt); int ff_nvenc_encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_packet); +void ff_nvenc_encode_flush(AVCodecContext *avctx); + extern const enum AVPixelFormat ff_nvenc_pix_fmts[]; +extern const AVCodecHWConfigInternal *ff_nvenc_hw_configs[]; #endif /* AVCODEC_NVENC_H */