[Cin] vaapi vs vdpau vs vulkan hwaccels
Andrew Randrianasulu
randrianasulu at gmail.com
Wed May 7 02:00:17 CEST 2025
I noticed that for me
OpenGL renderer string: AMD Radeon RX 550 / 550 Series (radeonsi,
polaris12, ACO, DRM 3.61, 6.12.26-x64)
OpenGL core profile version string: 4.6 (Core Profile) Mesa
25.2.0-devel (git-4f07092bdb)
OpenGL core profile shading language version string: 4.60
hwaccel vdpau was FASTER in cingg, and even more reliable
For 1080p60 h264 I hit 120 fps in default window on 1440x900 screen, vo x11
for 4k60 fps HDR I hit 30 fps in window, 25 fullscreen!
Vaapi was like 15 fps in window max.
So I benched them all
bash-5.1$ ~/bin/ffmpeg8-vk -hwaccel vaapi -i
~/K38_sdcard1/Documents/iPhone11_4K-recorder_59.940HDR10.mov -c:v
rawvideo -f nut /dev/null
ffmpeg version N-118190-g8bb682d454 Copyright (c) 2000-2025 the FFmpeg
developers
built with gcc 11.2.0 (GCC)
configuration: --enable-opencl --disable-debug --enable-libx265
--enable-libx264 --enable-gpl --enable-libplacebo --enable-vulkan
--enable-libshaderc --enable-libzimg --enable-libaom --enable-libdav1d
--enable-libsoxr --enable-libfontconfig --enable-libfreetype
--enable-libfribidi --enable-gnutls --enable-libass --enable-libbluray
--enable-libcdio --enable-frei0r --enable-libgsm --enable-openal
--enable-libopus --enable-librtmp --enable-libsnappy --enable-libspeex
--enable-libssh --enable-libtheora --enable-libtwolame
--enable-libv4l2 --enable-libvidstab --enable-libvorbis
--enable-libvpx --enable-libwebp
libavutil 60. 2.100 / 60. 2.100
libavcodec 62. 0.101 / 62. 0.101
libavformat 62. 0.100 / 62. 0.100
libavdevice 62. 0.100 / 62. 0.100
libavfilter 11. 0.100 / 11. 0.100
libswscale 9. 0.100 / 9. 0.100
libswresample 6. 0.100 / 6. 0.100
libpostproc 59. 1.100 / 59. 1.100
[aist#0:1/pcm_s16le @ 0xb437e80] Guessed Channel Layout: stereo
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
'/home/guest/K38_sdcard1/Documents/iPhone11_4K-recorder_59.940HDR10.mov':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
creation_time : 2020-12-18T22:20:29.000000Z
com.apple.quicktime.creationdate: 2020-12-18T17:20:29-0500
com.apple.quicktime.location.ISO6709: +33.4233-084.5802/
Duration: 00:00:19.16, start: 0.000000, bitrate: 69140 kb/s
Stream #0:0[0x1](und): Video: hevc (Main 10) (hvc1 / 0x31637668),
yuv420p10le(pc, bt2020nc/bt2020/smpte2084), 3840x2160, 64166 kb/s,
59.92 fps, 59.94 tbr, 600 tbn (default)
Metadata:
creation_time : 2020-12-18T22:20:29.000000Z
handler_name : Core Media Video
vendor_id : [0][0][0][0]
encoder : HEVC
Stream #0:1[0x2](und): Audio: pcm_s16le (lpcm / 0x6D63706C), 48000
Hz, stereo, s16, 1536 kb/s (default)
Metadata:
creation_time : 2020-12-18T22:20:29.000000Z
handler_name : Core Media Audio
vendor_id : [0][0][0][0]
File '/dev/null' already exists. Overwrite? [y/N] y
Stream mapping:
Stream #0:0 -> #0:0 (hevc (native) -> rawvideo (native))
Stream #0:1 -> #0:1 (pcm_s16le (native) -> vorbis (libvorbis))
Press [q] to stop, [?] for help
Output #0, nut, to '/dev/null':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
com.apple.quicktime.location.ISO6709: +33.4233-084.5802/
com.apple.quicktime.creationdate: 2020-12-18T17:20:29-0500
encoder : Lavf62.0.100
Stream #0:0: Video: rawvideo (RGB[15] / 0xF424752), p010le(pc,
bt2020nc/bt2020/smpte2084, progressive), 3840x2160, q=2-31, 7457502
kb/s, 59.94 fps, 60k tbn (default)
Metadata:
encoder : Lavc62.0.101 rawvideo
creation_time : 2020-12-18T22:20:29.000000Z
X-Language : und
handler_name : Core Media Video
vendor_id : [0][0][0][0]
Stream #0:1: Audio: vorbis (oV[0][0] / 0x566F), 48000 Hz, stereo,
fltp (default)
Metadata:
encoder : Lavc62.0.101 libvorbis
creation_time : 2020-12-18T22:20:29.000000Z
X-Language : und
handler_name : Core Media Audio
vendor_id : [0][0][0][0]
[out#0/nut @ 0xb436240] video:27896400KiB audio:232KiB subtitle:0KiB
other streams:0KiB global headers:4KiB muxing overhead: 0.000255%
frame= 1148 fps= 12 q=-0.0 Lsize=27896703KiB time=00:00:19.16
bitrate=11921748.9kbits/s speed= 0.2x
VAAPI = 12 fps.
bash-5.1$ ~/bin/ffmpeg8-vk -hwaccel vdpau -i
~/K38_sdcard1/Documents/iPhone11_4K-recorder_59.940HDR10.mov -c:v
rawvideo -f nut /dev/null
ffmpeg version N-118190-g8bb682d454 Copyright (c) 2000-2025 the FFmpeg
developers
built with gcc 11.2.0 (GCC)
configuration: --enable-opencl --disable-debug --enable-libx265
--enable-libx264 --enable-gpl --enable-libplacebo --enable-vulkan
--enable-libshaderc --enable-libzimg --enable-libaom --enable-libdav1d
--enable-libsoxr --enable-libfontconfig --enable-libfreetype
--enable-libfribidi --enable-gnutls --enable-libass --enable-libbluray
--enable-libcdio --enable-frei0r --enable-libgsm --enable-openal
--enable-libopus --enable-librtmp --enable-libsnappy --enable-libspeex
--enable-libssh --enable-libtheora --enable-libtwolame
--enable-libv4l2 --enable-libvidstab --enable-libvorbis
--enable-libvpx --enable-libwebp
libavutil 60. 2.100 / 60. 2.100
libavcodec 62. 0.101 / 62. 0.101
libavformat 62. 0.100 / 62. 0.100
libavdevice 62. 0.100 / 62. 0.100
libavfilter 11. 0.100 / 11. 0.100
libswscale 9. 0.100 / 9. 0.100
libswresample 6. 0.100 / 6. 0.100
libpostproc 59. 1.100 / 59. 1.100
[aist#0:1/pcm_s16le @ 0xc259e80] Guessed Channel Layout: stereo
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
'/home/guest/K38_sdcard1/Documents/iPhone11_4K-recorder_59.940HDR10.mov':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
creation_time : 2020-12-18T22:20:29.000000Z
com.apple.quicktime.creationdate: 2020-12-18T17:20:29-0500
com.apple.quicktime.location.ISO6709: +33.4233-084.5802/
Duration: 00:00:19.16, start: 0.000000, bitrate: 69140 kb/s
Stream #0:0[0x1](und): Video: hevc (Main 10) (hvc1 / 0x31637668),
yuv420p10le(pc, bt2020nc/bt2020/smpte2084), 3840x2160, 64166 kb/s,
59.92 fps, 59.94 tbr, 600 tbn (default)
Metadata:
creation_time : 2020-12-18T22:20:29.000000Z
handler_name : Core Media Video
vendor_id : [0][0][0][0]
encoder : HEVC
Stream #0:1[0x2](und): Audio: pcm_s16le (lpcm / 0x6D63706C), 48000
Hz, stereo, s16, 1536 kb/s (default)
Metadata:
creation_time : 2020-12-18T22:20:29.000000Z
handler_name : Core Media Audio
vendor_id : [0][0][0][0]
File '/dev/null' already exists. Overwrite? [y/N] y
Stream mapping:
Stream #0:0 -> #0:0 (hevc (native) -> rawvideo (native))
Stream #0:1 -> #0:1 (pcm_s16le (native) -> vorbis (libvorbis))
Press [q] to stop, [?] for help
Output #0, nut, to '/dev/null':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
com.apple.quicktime.location.ISO6709: +33.4233-084.5802/
com.apple.quicktime.creationdate: 2020-12-18T17:20:29-0500
encoder : Lavf62.0.100
Stream #0:0: Video: rawvideo (RGB[15] / 0xF424752), p016le(pc,
bt2020nc/bt2020/smpte2084, progressive), 3840x2160, q=2-31, 11932003
kb/s, 59.94 fps, 60k tbn (default)
Metadata:
encoder : Lavc62.0.101 rawvideo
creation_time : 2020-12-18T22:20:29.000000Z
X-Language : und
handler_name : Core Media Video
vendor_id : [0][0][0][0]
Stream #0:1: Audio: vorbis (oV[0][0] / 0x566F), 48000 Hz, stereo,
fltp (default)
Metadata:
encoder : Lavc62.0.101 libvorbis
creation_time : 2020-12-18T22:20:29.000000Z
X-Language : und
handler_name : Core Media Audio
vendor_id : [0][0][0][0]
[out#0/nut @ 0xc258240] video:27896400KiB audio:232KiB subtitle:0KiB
other streams:0KiB global headers:4KiB muxing overhead: 0.000255%
frame= 1148 fps= 17 q=-0.0 Lsize=27896703KiB time=00:00:19.16
bitrate=11921748.9kbits/s speed=0.283x
VDPAU = 17 fps
bash-5.1$ RADV_PERFTEST=video_decode ~/bin/ffmpeg8-vk -hwaccel vulkan
-i ~/K38_sdcard1/Documents/iPhone11_4K-recorder_59.940HDR10.mov -c:v
rawvideo -f nut /dev/null
ffmpeg version N-118190-g8bb682d454 Copyright (c) 2000-2025 the FFmpeg
developers
built with gcc 11.2.0 (GCC)
configuration: --enable-opencl --disable-debug --enable-libx265
--enable-libx264 --enable-gpl --enable-libplacebo --enable-vulkan
--enable-libshaderc --enable-libzimg --enable-libaom --enable-libdav1d
--enable-libsoxr --enable-libfontconfig --enable-libfreetype
--enable-libfribidi --enable-gnutls --enable-libass --enable-libbluray
--enable-libcdio --enable-frei0r --enable-libgsm --enable-openal
--enable-libopus --enable-librtmp --enable-libsnappy --enable-libspeex
--enable-libssh --enable-libtheora --enable-libtwolame
--enable-libv4l2 --enable-libvidstab --enable-libvorbis
--enable-libvpx --enable-libwebp
libavutil 60. 2.100 / 60. 2.100
libavcodec 62. 0.101 / 62. 0.101
libavformat 62. 0.100 / 62. 0.100
libavdevice 62. 0.100 / 62. 0.100
libavfilter 11. 0.100 / 11. 0.100
libswscale 9. 0.100 / 9. 0.100
libswresample 6. 0.100 / 6. 0.100
libpostproc 59. 1.100 / 59. 1.100
[aist#0:1/pcm_s16le @ 0xb4f6e80] Guessed Channel Layout: stereo
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
'/home/guest/K38_sdcard1/Documents/iPhone11_4K-recorder_59.940HDR10.mov':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
creation_time : 2020-12-18T22:20:29.000000Z
com.apple.quicktime.creationdate: 2020-12-18T17:20:29-0500
com.apple.quicktime.location.ISO6709: +33.4233-084.5802/
Duration: 00:00:19.16, start: 0.000000, bitrate: 69140 kb/s
Stream #0:0[0x1](und): Video: hevc (Main 10) (hvc1 / 0x31637668),
yuv420p10le(pc, bt2020nc/bt2020/smpte2084), 3840x2160, 64166 kb/s,
59.92 fps, 59.94 tbr, 600 tbn (default)
Metadata:
creation_time : 2020-12-18T22:20:29.000000Z
handler_name : Core Media Video
vendor_id : [0][0][0][0]
encoder : HEVC
Stream #0:1[0x2](und): Audio: pcm_s16le (lpcm / 0x6D63706C), 48000
Hz, stereo, s16, 1536 kb/s (default)
Metadata:
creation_time : 2020-12-18T22:20:29.000000Z
handler_name : Core Media Audio
vendor_id : [0][0][0][0]
File '/dev/null' already exists. Overwrite? [y/N] y
Stream mapping:
Stream #0:0 -> #0:0 (hevc (native) -> rawvideo (native))
Stream #0:1 -> #0:1 (pcm_s16le (native) -> vorbis (libvorbis))
Press [q] to stop, [?] for help
Output #0, nut, to '/dev/null':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
com.apple.quicktime.location.ISO6709: +33.4233-084.5802/
com.apple.quicktime.creationdate: 2020-12-18T17:20:29-0500
encoder : Lavf62.0.100
Stream #0:0: Video: rawvideo (RGB[15] / 0xF424752), p010le(pc,
bt2020nc/bt2020/smpte2084, progressive), 3840x2160, q=2-31, 7457502
kb/s, 59.94 fps, 60k tbn (default)
Metadata:
encoder : Lavc62.0.101 rawvideo
creation_time : 2020-12-18T22:20:29.000000Z
X-Language : und
handler_name : Core Media Video
vendor_id : [0][0][0][0]
Stream #0:1: Audio: vorbis (oV[0][0] / 0x566F), 48000 Hz, stereo,
fltp (default)
Metadata:
encoder : Lavc62.0.101 libvorbis
creation_time : 2020-12-18T22:20:29.000000Z
X-Language : und
handler_name : Core Media Audio
vendor_id : [0][0][0][0]
[out#0/nut @ 0xb4f5240] video:27896400KiB audio:232KiB subtitle:0KiB
other streams:0KiB global headers:4KiB muxing overhead: 0.000255%
frame= 1148 fps= 35 q=-0.0 Lsize=27896703KiB time=00:00:19.16
bitrate=11921748.9kbits/s speed=0.579x
VULKAN = 35 fps!
So, after THIS result I *definitely* will look into Vulkan hwaccel! :)
More information about the Cin
mailing list