[FFmpeg-user] Failed setup for format vulkan: hwaccel initialisation returned error for Arc A750

Terje J. Hanssen terjejhanssen at gmail.com
Thu Aug 15 12:00:26 EEST 2024



Den 14.08.2024 21:43, skrev Dennis Mungai:
> On Wed, 14 Aug 2024 at 15:27, Terje J. Hanssen 
> <terjejhanssen at gmail.com> wrote:
>
>
>
>     Den 14.08.2024 14:22, skrev Dennis Mungai:
>>     On Wed, Aug 14, 2024, 15:15 Terje J. Hanssen
>>     <terjejhanssen at gmail.com> wrote:
>>
>>
>>
>>         Den 14.08.2024 02:05, skrev Dennis Mungai:
>>>         On Wed, 14 Aug 2024, 02:59 Dennis Mungai,
>>>         <dmngaie at gmail.com> wrote:
>>>
>>>             On Wed, 14 Aug 2024, 02:45 Terje J. Hanssen,
>>>             <terjejhanssen at gmail.com> wrote:
>>>
>>>
>>>
>>>                 Den 13.08.2024 19:40, skrev Dennis Mungai:
>>>>                 On Tue, 13 Aug 2024 at 19:49, Andrew Randrianasulu<randrianasulu at gmail.com>  <mailto:randrianasulu at gmail.com>
>>>>                 wrote:
>>>>
>>>>>                 вт, 13 авг. 2024 г., 19:46 Terje J. Hanssen<terjejhanssen at gmail.com>  <mailto:terjejhanssen at gmail.com>:
>>>>>
>>>>>>                 Hi,
>>>>>>
>>>>>>                 I try to test Vulkan h264 or h265 decoding according to test command at
>>>>>>                 https://trac.ffmpeg.org/wiki/HWAccelIntro#Vulkan
>>>>>>                 ffmpeg -init_hw_device "vulkan=vk:0" -hwaccel vulkan
>>>>>>                 -hwaccel_output_format vulkan -i INPUT -f null - -benchmark
>>>>>>
>>>>>>                 but get the following output error:
>>>>>>                 [h264 @ 0x55952760cf40] Failed setup for format vulkan: hwaccel
>>>>>>                 initialisation returned error.
>>>>>>                 or
>>>>>>                 [hevc @ 0x5580e96e8c80] Failed setup for format vulkan: hwaccel
>>>>>>                 initialisation returned error.
>>>>>>
>>>>>>                 Any suggestion how to solve it?
>>>>>>
>>>>>                 Honestly, no idea .. try ffmpeg matrix/irc channel or ffmpeg-user?
>>>>>
>>>>                 This has to do with your input file. Your log indicates that you're
>>>>                 attempting to decode 10-bit H.264, and from my suspicion, almost zero GPUs
>>>>                 implement 10-bit H.264 decode.
>>>>                 You can verify via vainfo's output to see the decoder limitation(s) for
>>>>                 H.264 levels, etc.
>>>>                 Try decoding any of the sample file from Kodi's H.264 sample collection:
>>>>                 https://kodi.wiki/view/Samples#Codecs,_Framerates,_Black-levels_and_Subtitles
>>>>                 And report back.
>>>>                 _______________________________________________
>>>>
>>>
>>>                 1) Thank you for your suspicion regarding almost
>>>                 zero GPUs implement 10-bit H.264 decode.
>>>                 This is obviously true in my case, because when I
>>>                 tested a h264 8-bit yuv420p file, the hwaccel
>>>                 initialisation error was away. Full ffmpeg output
>>>                 report below using my own encoded input file.
>>>                 (Even with a h264 8-bit yuv422p input file ffmpeg
>>>                 did output the hwaccel initialisation error)
>>>
>>>                 2) However Intel Arc A-series should support HEVC
>>>                 (H.265) 10-bit 4:2:0 and 10-bit 4:2:2 decode and
>>>                 encode formats  according to this page:
>>>                 https://www.intel.com/content/www/us/en/support/articles/000098345/graphics.html
>>>                 Also testing the corresponding input file in this
>>>                 format get the hwaccel initialisation error, see the
>>>                 full ffmpeg output below.
>>>
>>>
>>         .......snip
>>
>>>                 -------------
>>>
>>>                 vainfo | egrep 'H264|422_10'
>>>
>>>                     libva info: VA-API version 1.22.0
>>>                     libva info: Trying to open
>>>                     /usr/lib64/dri/iHD_drv_video.so
>>>                     libva info: Found init function __vaDriverInit_1_21
>>>                     libva info: va_openDriver() returns 0
>>>                     VAProfileH264Main               :    VAEntrypointVLD
>>>                     VAProfileH264Main               :   
>>>                     VAEntrypointEncSliceLP
>>>                     VAProfileH264High               :    VAEntrypointVLD
>>>                     VAProfileH264High               :   
>>>                     VAEntrypointEncSliceLP
>>>                     VAProfileH264ConstrainedBaseline:    VAEntrypointVLD
>>>                     VAProfileH264ConstrainedBaseline:   
>>>                     VAEntrypointEncSliceLP
>>>                     VAProfileHEVCMain422_10         :    VAEntrypointVLD
>>>                     VAProfileHEVCMain422_10         :   
>>>                     VAEntrypointEncSliceLP
>>>
>>>                 ----------
>>>
>>>                 vulkaninfo | egrep 'H264|H265|HEVC'
>>>                 VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR
>>>                 VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR
>>>
>>>                 -------------
>>>
>>>
>>         ....snip
>>
>>>                 --------------
>>>
>>>                 2) 23M h265_yuv422p10le_SR.mp4
>>>
>>>                 ffmpeg -hide_banner -init_hw_device "vulkan=vk:0"
>>>                 -hwaccel vulkan -hwaccel_output_format vulkan -i
>>>                 h265_yuv422p10le_SR.mp4 -f null - -benchmark
>>>                 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
>>>                 'h265_yuv422p10le_SR.mp4':
>>>                   Metadata:
>>>                     major_brand     : isom
>>>                     minor_version   : 512
>>>                     compatible_brands: isomiso2mp41
>>>                     encoder         : Lavf61.1.100
>>>                   Duration: 00:01:11.16, start: 0.000000, bitrate:
>>>                 2703 kb/s
>>>                   Stream #0:0[0x1](und): Video: hevc (Rext) (hev1 /
>>>                 0x31766568), yuv422p10le(pc,
>>>                 smpte170m/unknown/unknown, top coded first
>>>                 (swapped)), 1920x1080 [SAR 1:1 DAR 16:9], 2700 kb/s,
>>>                 25 fps, 25 tbr, 12800 tbn (default)
>>>                       Metadata:
>>>                         handler_name    : VideoHandler
>>>                         vendor_id       : [0][0][0][0]
>>>                 Stream mapping:
>>>                   Stream #0:0 -> #0:0 (hevc (native) ->
>>>                 wrapped_avframe (native))
>>>                 Press [q] to stop, [?] for help
>>>                 ** [hevc @ 0x55edf209fa40] Failed setup for format
>>>                 vulkan: hwaccel initialisation returned error.
>>>                 ** [hevc @ 0x55edf209fa40] Unsupported film grain
>>>                 parameters. Ignoring film grain.
>>>                 Output #0, null, to 'pipe:':
>>>                   Metadata:
>>>                     major_brand     : isom
>>>                     minor_version   : 512
>>>                     compatible_brands: isomiso2mp41
>>>                     encoder         : Lavf61.1.100
>>>                   Stream #0:0(und): Video: wrapped_avframe,
>>>                 yuv422p10le(pc, smpte170m/unknown/unknown,
>>>                 progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31,
>>>                 200 kb/s, 25 fps, 25 tbn (default)
>>>                       Metadata:
>>>                         handler_name    : VideoHandler
>>>                         vendor_id       : [0][0][0][0]
>>>                         encoder         : Lavc61.3.100 wrapped_avframe
>>>                 [out#0/null @ 0x55edf207ff40] video:764KiB
>>>                 audio:0KiB subtitle:0KiB other streams:0KiB global
>>>                 headers:0KiB muxing overhead: unknown
>>>                 frame= 1779 fps=750 q=-0.0 Lsize=N/A
>>>                 time=00:01:11.16 bitrate=N/A speed=  30x
>>>                 bench: utime=15.892s stime=0.188s rtime=2.371s
>>>                 bench: maxrss=411104KiB
>>>
>>>
>>>
>>>             It seems that as implemented, Vulkan decoding is
>>>             definitely failing with interlaced HEVC video,
>>>             regardless of the underlying pixel format.
>>>
>>>             The file failing on your end is interlaced HEVC, see
>>>             h265_yuv422p10le_SR.mp4
>>>
>>>
>>>         This ticket may also be relevant, interlaced HEVC encodes
>>>         are quite rare out here and may be non-spec compliant.
>>>
>>         ======================
>>
>>         Good points.
>>
>>         My original ProRes422 HQ source input file before encoding to
>>         HEVC using CinelerraGG/FFmpeg, was a  in a valid HD
>>         1920x1080i25 format.
>>         I also had a look at the available ffmpeg pixel formats:
>>
>>         ffmpeg -hide_banner -h encoder=hevc | grep yuv422p10
>>             Supported pixel formats: yuv420p yuvj420p yuv422p
>>         yuvj422p yuv444p yuvj444p gbrp yuv420p10le yuv422p10le
>>         yuv444p10le gbrp10le yuv420p12le yuv422p12le yuv444p12le
>>         gbrp12le gray gray10le gray12le
>>
>>         ffmpeg -hide_banner -h full codecs=hevc | grep yuv422p10
>>              yuv422p10       64           ..FV.......
>>              yuv422p10       3            ..FV.......
>>
>>         So now in a third attempt,  I've tried to simply deinterlace
>>         the H.265 file, but still get the ffmpeg Vulkan hwaccel
>>         initialisation error.
>>         I'm wondering if my deinterlace code line is correct, because
>>         the deinterlaced output is smaller (halph the size) of the
>>         input file.
>>         I would have expected it larger(?)
>>
>>         --------------
>>
>>         ffmpeg -hide_banner -i h265_yuv422p10le_SR.mp4 -vf
>>         yadif=parity=auto -c:v libx265 -c:a copy
>>         h265_yuv422p10le_SR_deinterlaced.mp4
>>         Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
>>         'h265_yuv422p10le_SR.mp4':
>>           Metadata:
>>             major_brand     : isom
>>             minor_version   : 512
>>             compatible_brands: isomiso2mp41
>>             encoder         : Lavf61.1.100
>>           Duration: 00:01:11.16, start: 0.000000, bitrate: 2703 kb/s
>>           Stream #0:0[0x1](und): Video: hevc (Rext) (hev1 /
>>         0x31766568), yuv422p10le(pc, smpte170m/unknown/unknown, top
>>         coded first (swapped)), 1920x1080 [SAR 1:1 DAR 16:9], 2700
>>         kb/s, 25 fps, 25 tbr, 12800 tbn (default)
>>               Metadata:
>>                 handler_name    : VideoHandler
>>                 vendor_id       : [0][0][0][0]
>>         File 'h265_yuv422p10le_SR_deinterlaced.mp4' already exists.
>>         Overwrite? [y/N] y
>>         Stream mapping:
>>           Stream #0:0 -> #0:0 (hevc (native) -> hevc (libx265))
>>         Press [q] to stop, [?] for help
>>         x265 [info]: HEVC encoder version
>>         x265 [info]: build info [Linux][GCC 13.3.0][64 bit] 10bit
>>         x265 [info]: using cpu capabilities: MMX2 SSE2Fast LZCNT
>>         SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
>>         x265 [info]: Main 4:2:2 10 profile, Level-4 (Main tier)
>>         x265 [info]: Thread pool created using 20 threads
>>         x265 [info]: Slices                              : 1
>>         x265 [info]: frame threads / pool features       : 4 / wpp(17
>>         rows)
>>         x265 [info]: Coding QT: max CU size, min CU size : 64 / 8
>>         x265 [info]: Residual QT: max TU size, max depth : 32 / 1
>>         inter / 1 intra
>>         x265 [info]: ME / range / subpel / merge         : hex / 57 /
>>         2 / 3
>>         x265 [info]: Keyframe min / max / scenecut / bias  : 25 / 250
>>         / 40 / 5.00
>>         x265 [info]: Lookahead / bframes / badapt        : 20 / 4 / 2
>>         x265 [info]: b-pyramid / weightp / weightb       : 1 / 1 / 0
>>         x265 [info]: References / ref-limit  cu / depth  : 3 / off / on
>>         x265 [info]: AQ: mode / str / qg-size / cu-tree  : 2 / 1.0 /
>>         32 / 1
>>         x265 [info]: Rate Control / qCompress            : CRF-28.0 /
>>         0.60
>>         x265 [info]: tools: rd=3 psy-rd=2.00 early-skip rskip mode=1
>>         signhide tmvp
>>         x265 [info]: tools: b-intra strong-intra-smoothing lslices=6
>>         deblock sao
>>         Output #0, mp4, to 'h265_yuv422p10le_SR_deinterlaced.mp4':
>>           Metadata:
>>             major_brand     : isom
>>             minor_version   : 512
>>             compatible_brands: isomiso2mp41
>>             encoder         : Lavf61.1.100
>>           Stream #0:0(und): Video: hevc (hev1 / 0x31766568),
>>         yuv422p10le(pc, smpte170m/unknown/unknown, progressive),
>>         1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 25 fps, 12800 tbn (default)
>>               Metadata:
>>                 handler_name    : VideoHandler
>>                 vendor_id       : [0][0][0][0]
>>                 encoder         : Lavc61.3.100 libx265
>>               Side data:
>>                 cpb: bitrate max/min/avg: 0/0/0 buffer size: 0
>>         vbv_delay: N/A
>>         [out#0/mp4 @ 0x5623a778e940] video:11443KiB audio:0KiB
>>         subtitle:0KiB other streams:0KiB global headers:2KiB muxing
>>         overhead: 0.213827%
>>         frame= 1779 fps= 48 q=32.7 Lsize=   11468KiB time=00:01:11.08
>>         bitrate=1321.7kbits/s speed=1.92x
>>         x265 [info]: frame I:      9, Avg QP:26.34 kb/s: 10966.00
>>         x265 [info]: frame P:    452, Avg QP:27.25 kb/s: 3883.36
>>         x265 [info]: frame B:   1318, Avg QP:34.22 kb/s: 370.40
>>         x265 [info]: Weighted P-Frames: Y:10.2% UV:0.0%
>>
>>         encoded 1779 frames in 36.97s (48.12 fps), 1316.56 kb/s, Avg
>>         QP:32.41
>>
>>         ----------------
>>
>>         3) 12M    h265_yuv422p10le_SR_deinterlaced.mp4
>>
>>
>>         ffmpeg -hide_banner -init_hw_device "vulkan=vk:0" -hwaccel
>>         vulkan -hwaccel_output_format vulkan -i
>>         h265_yuv422p10le_SR_deinterlaced.mp4 -f null - -benchmark
>>         Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
>>         'h265_yuv422p10le_SR_deinterlaced.mp4':
>>           Metadata:
>>             major_brand     : isom
>>             minor_version   : 512
>>             compatible_brands: isomiso2mp41
>>             encoder         : Lavf61.1.100
>>           Duration: 00:01:11.16, start: 0.000000, bitrate: 1320 kb/s
>>           Stream #0:0[0x1](und): Video: hevc (Rext) (hev1 /
>>         0x31766568), yuv422p10le(pc, smpte170m/unknown/unknown,
>>         progressive), 1920x1080 [SAR 1:1 DAR 16:9], 1317 kb/s, 25
>>         fps, 25 tbr, 12800 tbn (default)
>>               Metadata:
>>                 handler_name    : VideoHandler
>>                 vendor_id       : [0][0][0][0]
>>                 encoder         : Lavc61.3.100 libx265
>>         Stream mapping:
>>           Stream #0:0 -> #0:0 (hevc (native) -> wrapped_avframe (native))
>>         Press [q] to stop, [?] for help
>>         [hevc @ 0x56422043e480] Failed setup for format vulkan:
>>         hwaccel initialisation returned error.
>>         Output #0, null, to 'pipe:':
>>           Metadata:
>>             major_brand     : isom
>>             minor_version   : 512
>>             compatible_brands: isomiso2mp41
>>             encoder         : Lavf61.1.100
>>           Stream #0:0(und): Video: wrapped_avframe, yuv422p10le(pc,
>>         smpte170m/unknown/unknown, progressive), 1920x1080 [SAR 1:1
>>         DAR 16:9], q=2-31, 200 kb/s, 25 fps, 25 tbn (default)
>>               Metadata:
>>                 handler_name    : VideoHandler
>>                 vendor_id       : [0][0][0][0]
>>                 encoder         : Lavc61.3.100 wrapped_avframe
>>         [out#0/null @ 0x564220459f40] video:764KiB audio:0KiB
>>         subtitle:0KiB other streams:0KiB global headers:0KiB muxing
>>         overhead: unknown
>>         frame= 1779 fps=790 q=-0.0 Lsize=N/A time=00:01:11.16
>>         bitrate=N/A speed=31.6x
>>         bench: utime=13.717s stime=0.122s rtime=2.251s
>>         bench: maxrss=418956KiB
>>
>>         ===================================
>>
>>
>>
>>     Can I see a full dump from vainfo? Want to confirm something
>>
>
>     vainfo
>     Trying display: wayland
>     Trying display: x11
>     libva info: VA-API version 1.22.0
>     libva info: Trying to open /usr/lib64/dri/iHD_drv_video.so
>     libva info: Found init function __vaDriverInit_1_21
>     libva info: va_openDriver() returns 0
>     vainfo: VA-API version: 1.22 (libva 2.22.0)
>     vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics
>     - 24.1.5 ()
>     vainfo: Supported profile and entrypoints
>           VAProfileNone                   : VAEntrypointVideoProc
>           VAProfileNone                   : VAEntrypointStats
>           VAProfileMPEG2Simple            : VAEntrypointVLD
>           VAProfileMPEG2Main              : VAEntrypointVLD
>           VAProfileH264Main               : VAEntrypointVLD
>           VAProfileH264Main               : VAEntrypointEncSliceLP
>           VAProfileH264High               : VAEntrypointVLD
>           VAProfileH264High               : VAEntrypointEncSliceLP
>           VAProfileJPEGBaseline           : VAEntrypointVLD
>           VAProfileJPEGBaseline           : VAEntrypointEncPicture
>           VAProfileH264ConstrainedBaseline: VAEntrypointVLD
>           VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
>           VAProfileHEVCMain               : VAEntrypointVLD
>           VAProfileHEVCMain               : VAEntrypointEncSliceLP
>           VAProfileHEVCMain10             : VAEntrypointVLD
>           VAProfileHEVCMain10             : VAEntrypointEncSliceLP
>           VAProfileVP9Profile0            : VAEntrypointVLD
>           VAProfileVP9Profile0            : VAEntrypointEncSliceLP
>           VAProfileVP9Profile1            : VAEntrypointVLD
>           VAProfileVP9Profile1            : VAEntrypointEncSliceLP
>           VAProfileVP9Profile2            : VAEntrypointVLD
>           VAProfileVP9Profile2            : VAEntrypointEncSliceLP
>           VAProfileVP9Profile3            : VAEntrypointVLD
>           VAProfileVP9Profile3            : VAEntrypointEncSliceLP
>           VAProfileHEVCMain12             : VAEntrypointVLD
>           VAProfileHEVCMain422_10         : VAEntrypointVLD
>           VAProfileHEVCMain422_10         : VAEntrypointEncSliceLP
>           VAProfileHEVCMain422_12         : VAEntrypointVLD
>           VAProfileHEVCMain444            : VAEntrypointVLD
>           VAProfileHEVCMain444            : VAEntrypointEncSliceLP
>           VAProfileHEVCMain444_10         : VAEntrypointVLD
>           VAProfileHEVCMain444_10         : VAEntrypointEncSliceLP
>           VAProfileHEVCMain444_12         : VAEntrypointVLD
>           VAProfileHEVCSccMain            : VAEntrypointVLD
>           VAProfileHEVCSccMain            : VAEntrypointEncSliceLP
>           VAProfileHEVCSccMain10          : VAEntrypointVLD
>           VAProfileHEVCSccMain10          : VAEntrypointEncSliceLP
>           VAProfileHEVCSccMain444         : VAEntrypointVLD
>           VAProfileHEVCSccMain444         : VAEntrypointEncSliceLP
>           VAProfileAV1Profile0            : VAEntrypointVLD
>           VAProfileAV1Profile0            : VAEntrypointEncSliceLP
>           VAProfileHEVCSccMain444_10      : VAEntrypointVLD
>           VAProfileHEVCSccMain444_10      : VAEntrypointEncSliceLP
>
>
>
> According to Intel's docs on libva, the rext HEVC profile is supported 
> for decoding in your libva build, yet it fails on your end (DG2).
> I'm referring to the notes on 
> https://github.com/intel/libva/blob/master/va/va_dec_hevc.h#L242, 
> implying that this is tied to VAProfileHEVCScc* profile entry-points.
> The failing video signals HEVC rext as it's profile.
> Perhaps an intel developer can take a look at this and assist?
>
> Copying some of them in the thread.

@Dennis, Thank you for doing that.

Terje J. H


More information about the ffmpeg-user mailing list