On 20/02/2026 14:29, richardjnz--- via Libav-user wrote:
I am a relatively new starter with ffmpeg 8.0.1 libraries. I am working
on Windows 11 with Visual Studio 2026, building the libraries in MSYS2.
I have a source of uncompressed video frames in BGRA format which can be
progressive or interlaced, and I want to encode them to H.264 using the
ffmpeg libraries using any of the hardware encoders h264_qsv, h264_amf,
h264_nvenc (or h264_mf as a possible software fallback). There is no
decoding needed because the input frames are already uncompressed.
The BGRA frames need to go through color conversion to NV12 (to keep the
encoder happy), optional deinterlacing (if the frames are interlaced),
and optional resizing in a ffmpeg filter graph before being fed into the
encoder.
I have the ffmpeg filter graph working fine on the CPU feeding the
hardware encoder – so for example for interlaced source frames with
resizing the filter string is:
scale=interl=1:format=nv12,bwdif=mode=send_frame:parity=auto:deint=all,scale=%d:%d
But I would like the whole filter graph to run on the GPU instead and
feed the hardware encoder so that everything is done on the GPU.
Hopefully it will then run faster(?)
Web/AI searches suggest that there is a “d3d11vpp” filter in ffmpeg that
provides a single platform-agnostic method of doing all this on the GPU
using D3D11, rather than using different platform-specific filters.
Suggested filter strings vary but look something like:
hwupload,d3d11vpp=format=nv12:deinterlace=2:rate=0:w=%d:h=%d
But I can’t find any evidence that d3d11vpp exists (at least in version
8.0.1 of ffmpeg), so it may just be an AI hallucination.
No such filter exists.
There is a few specific filters using d3d11 and d3d12 api, but no magic
generic filter that does everything.
So, is there *really* a platform-agnostic way of running the filter
graph on the GPU, or do you have to use filters specific to the PC’s
actual hardware?
There is not, every hardware API needs its own filters.
Different platforms have different filters implemented on them.
The most generic way is probably Vulkan via libplacebo and other filters.
But it's still highly volatile in nature and deals with tons of driver
bugs and vendor differences.
_______________________________________________
Libav-user mailing list -- [email protected]
To unsubscribe send an email to [email protected]