[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