#11352: On the state of FFmpeg's ffv1_vulkan encoder implementation on Intel & NVIDIA -------------------------------------+------------------------------------- Reporter: Dennis E. | Type: defect Mungai | Status: new | Priority: normal Component: avcodec | Version: git- Keywords: vulkan ffv1 | master ffv1_vulkan | Blocked By: Blocking: | Reproduced by developer: 0 Analyzed by developer: 0 | -------------------------------------+------------------------------------- The subject matter above refers. Sample command-lines are provided for reference, see the notes section below.
**(a). Intel:** {{{ ffmpeg \ -init_hw_device vulkan=vk:0 \ -hwaccel vulkan -hwaccel_output_format vulkan \ -hwaccel_device vk -filter_hw_device vk \ -loglevel info \ -fflags +genpts \ -i '4KIOS.mov' \ -vf "bwdif_vulkan,libplacebo=format=yuv420p" \ -c:v ffv1_vulkan \ -r:v 60 -g:v 2 -level:v 4 -strict -2 -coder:v 2 -context:v 1 \ -c:a libfdk_aac -b:a 128k -ar 48000 -ac 2 \ -map "0:v" -map "0:a" \ -max_muxing_queue_size 8192 -max_interleave_delta 0 \ -flags -global_header+cgop \ -y -f matroska "ticketx_ffv1.mkv" }}} **(b). NVIDIA:** {{{ ffmpeg \ -init_hw_device vulkan=vk:0 \ -hwaccel vulkan -hwaccel_output_format vulkan \ -hwaccel_device vk -filter_hw_device vk \ -loglevel info \ -fflags +genpts \ -i '4KIOS.mov' \ -vf "bwdif_vulkan,libplacebo=format=yuv420p" \ -c:v ffv1_vulkan \ -r:v 60 -g:v 2 -level:v 4 -strict -2 -coder:v 2 -context:v 1 \ -c:a libfdk_aac -b:a 128k -ar 48000 -ac 2 \ -map "0:v" -map "0:a" \ -max_delay 5000000 -max_muxing_queue_size 8192 -max_interleave_delta 0 \ -flags -global_header+cgop \ -y -f matroska "ticket4_ffv1.mkv" }}} **Runtime notes:** It's observed that the encoder also works quite well with and without using Vulkan H/W Accelerated decode, producing consistent results across multiple runs per test platform with and without Vulkan H/W Accelerated decode. As noted by Lynne on IRC regarding this encoder, handling yuv420p requires the following conditions to be met: i. Either 64 pixel aligned images for both h and v. ii. And using version 4 (Pass `-level 4 -strict -2`). The example commands above have the flags `-strict -2` and `-level:v 4` set to match the constraints defined above. **Oddities/bugs:** 1. Even with identical parameters, the file sizes produced by Intel's and NVIDIA's `ffv1_vulkan` instances differ significantly. Intel's anv driver produces ridiculously massive files as shown below: The file from NVIDIA's session,named "ticket4_ffv1.mkv" is about 4.9G in size. Intel's session output with the same settings, named "ticketx_ffv1.mkv", weighs at 41 GB. 2. NVIDIA's performance with this encoder, as tested on the RTX 4060 Max Q with a 4k input sample is at about ~0.63x speed. Intel's performance on the Integrated Raptor Lake GPU with the ANV driver clocks in at a paltry speed of 0.0907x. 7x slower. 3. With NVIDIA, the {{{ffv1_vulkan encoder}}} will hang at a sporadic frame on each session *if* `-g:v` is higher than 2, regardless of the `-level:v` setting, all else being constant. -- Ticket URL: <https://trac.ffmpeg.org/ticket/11352> FFmpeg <https://ffmpeg.org> FFmpeg issue tracker
_______________________________________________ FFmpeg-trac mailing list FFmpeg-trac@avcodec.org https://ffmpeg.org/mailman/listinfo/ffmpeg-trac To unsubscribe, visit link above, or email ffmpeg-trac-requ...@ffmpeg.org with subject "unsubscribe".