[Cin] vaapi vs vdpau vs vulkan hwaccels

Андрей Спицын spitsyn.andrey at gmail.com
Wed May 7 08:53:18 CEST 2025


The funny thing is that vdpau is nvidia only hardware solution, on Intel
and amd cards it use vaapi emulation.

Wow, vulkan definitely speeds things up.

Best regards,
Andrey



ср, 7 мая 2025 г., 06:00 Andrew Randrianasulu via Cin <
cin at lists.cinelerra-gg.org>:

> 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! :)
> --
> Cin mailing list
> Cin at lists.cinelerra-gg.org
> https://lists.cinelerra-gg.org/mailman/listinfo/cin
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20250507/1449a767/attachment-0001.htm>


More information about the Cin mailing list