пт, 6 дек. 2024 г., 13:01 Andrea paz <[email protected]>:
Arch upgraded to mesa 24.3.1 and my tests with system ffmpeg 7.1 were successful, but with many problems. Need to initialize the “vulkan” device otherwise it doesn't work. In case of AMD graphics you have to use RADV_PERFTEST=video_decode and/or RADV_PERFTEST=video_encode. This is because the merge in Mesa that will make device enablement automatic will only be in Mesa 25 (which should be the next release).
The decoder works (it worked even before Mesa 24.3 came out) but it should be noted that without vulkan you have fps= 2222 while with vulkan you have fps=460 Command used for the decoder:
$ RADV_PERFTEST=video_decode ffmpeg -init_hw_device "vulkan=vk:0" -hwaccel vulkan -hwaccel_output_format vulkan -i battlefield_1080p_120fps_8mbps.mp4 -f null - -benchmark
The encoder also works (it did not work before Mesa 24.3): you can see that the file is created (test_vk.mp4) and starts in mpv/VLC; the sound works but the video is completely black. Also, the original video is 35 MB while the video encoded with hevc_vulkan is 1.3 GB! The fps are not bad: 223. Command used for encoder:
$ RADV_PERFTEST=video_encode ffmpeg -init_hw_device vulkan=vkdev:0 -filter_hw_device vkdev -i battlefield_1080p_120fps_8mbps.mp4 -filter:v "format=nv12,hwupload" -c:v hevc_vulkan test_vk.mp4
Instead when compiling CinGG I can't to enable the vulkan device. How to do it? i tried to use --enable-vulkan in “configure” but it is not recognized. How could I use the two strings RADV_PERFTEST=video_encode and RADV_PERFTEST=video_decode in CinGG?
just set them as export RADV_PERFTEST=video_encode before launching cingg not sure, may be you can add video_decode after "," ? check mesa3d docs ... for vulkan ... does it even makes sense to try with 7.0 ffmpeg? I think many fixes were done in 7.1/git ffmpeg exactly for this case .. may be compile cingg with external/system 7.1 ? it will break some presets and F_scale alternatively just use yuv4moeg pipeline to external ffmpeg running in another terminal, using named fifo (made with mkfifo) as filename to encode on cingg side and filename to decode from on encoding ffmpeg instance. No sound ... Look around may be someone already filled bugreport on too big filesize with hevc_vulcan on radv ? I think if merged ffv1 and some other vulcan-based encoders in ffmpeg git should be more interesting than yet another way to engage same h264/5 encoding hardware ... http://git.ffmpeg.org/gitweb/ffmpeg.git?a=search&h=HEAD&st=commit&s=vulkan yeah, ffv1 vulcan encoder was merged in november thanks for testing anyway!
I attach the test results.
Il giorno gio 28 nov 2024 alle ore 01:06 Terje J. Hanssen via Cin <[email protected]> ha scritto:
Den 28.11.2024 00:00, skrev Terje J. Hanssen:
Den 27.11.2024 23:40, skrev Andrew Randrianasulu:
чт, 28 нояб. 2024 г., 01:22 Terje J. Hanssen via Cin <
In August this year we had a thread "h264 vulkan encoding" initiated by
Andrea
https://lists.cinelerra-gg.org/pipermail/cin/2024-August/008517.html
Mesa 24.3 is released with many Vulkan Driver Improvement, and implementations are expected around the corner in rolling distributions.
Some articles about this in Phoronix https://www.phoronix.com/news/Mesa-24.3-Released https://www.phoronix.com/news/Mesa-24.3-rc2 https://www.phoronix.com/news/Mesa-24.3-rc1-Released https://www.phoronix.com/news/Intel-Vulkan-Video-H264-H265
With ffmpeg (7.1) h264/5 vulkan encoder support, I wonder if Cingg is ready to put them into use?
ffmpeg -hide_banner -encoders | grep vulkan V....D h264_vulkan H.264/AVC (Vulkan) (codec h264) V....D hevc_vulkan H.265/HEVC (Vulkan) (codec hevc)
you can try already (on system's ffmpeg), can't you?
Not Mesa 24.3 and vulkan encoding quite yet:
API: OpenGL v: 4.6 vendor: intel mesa v: 24.2.7 renderer: Mesa Intel Arc A750 Graphics (DG2) API: Vulkan v: 1.3.296 drivers: N/A surfaces: xcb,xlib API: EGL Message: EGL data requires eglinfo. Check --recommends.
# export ANV_VIDEO_DECODE=1
# vulkaninfo | grep VK_KHR_video VK_KHR_video_decode_h264 : extension revision 9 VK_KHR_video_decode_h265 : extension revision 8 VK_KHR_video_decode_queue : extension revision 8 VK_KHR_video_queue
So assume the FFmpeg benchmarks sample was vulkan decoding only, as they work for hdv (mpeg2) input also:
ffmpeg -hide_banner -init_hw_device "vulkan=vk:0" -hwaccel vulkan -hwaccel_output_format vulkan -i hdv09_04.m2t -f null - -benchmark frame= 5963 fps=3503 q=-0.0 Lsize=N/A time=00:03:58.77 bitrate=N/A speed= 140x bench: utime=19.045s stime=0.313s rtime=1.702s
ffmpeg -hide_banner -init_hw_device "vulkan=vk:0" -hwaccel vulkan -hwaccel_output_format vulkan -i hdv09_04_h264_qsv.mp4 -f null - -benchmark frame= 5969 fps=988 q=-0.0 Lsize=N/A time=00:03:58.76 bitrate=N/A speed=39.5x bench: utime=1.397s stime=1.390s rtime=6.042s bench: maxrss=164700KiB
fmpeg -hide_banner -init_hw_device "vulkan=vk:0" -hwaccel vulkan -hwaccel_output_format vulkan -i hdv09_04_hevc_qsv_8b420.mp4 -f null - -benchmark frame= 248 fps=2.0 q=-0.0 size=N/A time=00:00:09.92 bitrate=N/A speed=0.0787x hevc terrible slow !!
And I found a sample encoding on reddit, which failed as assumed for me as follows (similar for h264_vulkan):
ffmpeg -init_hw_device vulkan=vkdev:0 -filter_hw_device vkdev -i hdv09_04.m2t -filter:v "format=nv12,hwupload" -c:v h264_vulkan hdv09_04_h264_vulkan_8b420.mp4
ffmpeg version 7.1 Copyright (c) 2000-2024 the FFmpeg developers built with gcc 14 (SUSE Linux) configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --incdir=/usr/include/ffmpeg --extra-cflags='-O2 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto -ffat-lto-objects -g' --optflags='-O2 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto -ffat-lto-objects -g' --disable-htmlpages --enable-pic --disable-stripping --enable-shared --disable-static --enable-gpl --enable-version3 --enable-libsmbclient --disable-openssl --enable-gnutls --enable-ladspa --enable-libshaderc --enable-vulkan ...................... .......... [hevc_vulkan @ 0x55c32f8df6c0] Device does not support the VK_KHR_video_encode_queue extension! [vost#0:0/hevc_vulkan @ 0x55c32fa0cf00] Error while opening encoder - maybe incorrect parameters such as bit_rate, rate, width or height. [vf#0:0 @ 0x55c32f8adcc0] Error sending frames to consumers: Function not implemented [vf#0:0 @ 0x55c32f8adcc0] Task finished with error code: -38 (Function not implemented) [vf#0:0 @ 0x55c32f8adcc0] Terminating thread with return code -38 (Function not implemented) [vost#0:0/hevc_vulkan @ 0x55c32fa0cf00] Could not open encoder before EOF [vost#0:0/hevc_vulkan @ 0x55c32fa0cf00] Task finished with error code: -22 (Invalid argument) [vost#0:0/hevc_vulkan @ 0x55c32fa0cf00] Terminating thread with return code -22 (Invalid argument) [out#0/mp4 @ 0x55c32f8b2c80] Nothing was written into output file, because at least one of its streams received no packets. frame= 0 fps=0.0 q=0.0 Lsize= 0KiB time=N/A bitrate=N/A speed=N/A [aac @ 0x55c32f90c640] Qavg: 441.163 Conversion failed!
-- Cin mailing list [email protected] https://lists.cinelerra-gg.org/mailman/listinfo/cin