On Mon, 13 Apr 2020 at 18:34, Mark Thompson <s...@jkqxz.net> wrote: > NOT TESTED. > --- > Needs someone with suitable hardware to try it. > > With this and the relevant ffmpeg patches, existing stuff should continue > to work and you should also be able to choose between multiple devices for > a standalone encoder with things like: > > ffmpeg -init_hw_device cuda:2 ... -c:v nvenc ... > ffmpeg -init_hw_device d3d11:2 ... -c:v nvenc ... > > > libavcodec/nvenc.c | 11 +++++++++++ > libavcodec/nvenc.h | 1 + > libavcodec/nvenc_h264.c | 1 + > libavcodec/nvenc_hevc.c | 1 + > 4 files changed, 14 insertions(+) > > diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c > index 9a96bf2bba..b0cd8874ee 100644 > --- a/libavcodec/nvenc.c > +++ b/libavcodec/nvenc.c > @@ -30,6 +30,7 @@ > #include "libavutil/avassert.h" > #include "libavutil/mem.h" > #include "libavutil/pixdesc.h" > +#include "hwconfig.h" > #include "internal.h" > > #define CHECK_CU(x) FF_CUDA_CHECK_DL(avctx, dl_fn->cuda_dl, x) > @@ -55,6 +56,16 @@ const enum AVPixelFormat ff_nvenc_pix_fmts[] = { > AV_PIX_FMT_NONE > }; > > +const AVCodecHWConfigInternal *ff_nvenc_hw_configs[] = { > + HW_CONFIG_ENCODER_FRAMES(CUDA, CUDA), > + HW_CONFIG_ENCODER_DEVICE(NONE, CUDA), > +#if CONFIG_D3D11VA > + HW_CONFIG_ENCODER_FRAMES(D3D11, D3D11), > + HW_CONFIG_ENCODER_DEVICE(NONE, D3D11), > +#endif > + NULL, > +}; > + > #define IS_10BIT(pix_fmt) (pix_fmt == AV_PIX_FMT_P010 || \ > pix_fmt == AV_PIX_FMT_P016 || \ > pix_fmt == AV_PIX_FMT_YUV444P16) > diff --git a/libavcodec/nvenc.h b/libavcodec/nvenc.h > index c44c81e675..c80332d914 100644 > --- a/libavcodec/nvenc.h > +++ b/libavcodec/nvenc.h > @@ -217,5 +217,6 @@ int ff_nvenc_encode_frame(AVCodecContext *avctx, > AVPacket *pkt, > 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 */ > diff --git a/libavcodec/nvenc_h264.c b/libavcodec/nvenc_h264.c > index 479155fe15..6d82422308 100644 > --- a/libavcodec/nvenc_h264.c > +++ b/libavcodec/nvenc_h264.c > @@ -248,4 +248,5 @@ AVCodec ff_h264_nvenc_encoder = { > .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, > .pix_fmts = ff_nvenc_pix_fmts, > .wrapper_name = "nvenc", > + .hw_configs = ff_nvenc_hw_configs, > }; > diff --git a/libavcodec/nvenc_hevc.c b/libavcodec/nvenc_hevc.c > index 7c9b3848f1..58d5265977 100644 > --- a/libavcodec/nvenc_hevc.c > +++ b/libavcodec/nvenc_hevc.c > @@ -206,4 +206,5 @@ AVCodec ff_hevc_nvenc_encoder = { > .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE, > .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, > .wrapper_name = "nvenc", > + .hw_configs = ff_nvenc_hw_configs, > }; > -- > 2.25.1 > > > What type of hardware is considered "suitable"? Systems with multiple NVENC-capable GPUs? Also, provide a sample command line extending on the examples above that you'd like tested and I'll report back with results.
Regards, Dennis. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".