пт, 6 дек. 2024 г., 13:01 Andrea paz <gamberucci.andrea@gmail.com>:
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
<cin@lists.cinelerra-gg.org> 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 <cin@lists.cinelerra-gg.org>:
>>
>> 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
> Cin@lists.cinelerra-gg.org
> https://lists.cinelerra-gg.org/mailman/listinfo/cin