On Wed, Aug 14, 2024, 15:15 Terje J. Hanssen
<terjejhans...@gmail.com> wrote:
Den 14.08.2024 02:05, skrev Dennis Mungai:
On Wed, 14 Aug 2024, 02:59 Dennis Mungai,
<dmng...@gmail.com> wrote:
On Wed, 14 Aug 2024, 02:45 Terje J. Hanssen,
<terjejhans...@gmail.com> wrote:
Den 13.08.2024 19:40, skrev Dennis Mungai:
On Tue, 13 Aug 2024 at 19:49, Andrew
Randrianasulu<randrianas...@gmail.com> <mailto:randrianas...@gmail.com>
wrote:
вт, 13 авг. 2024 г., 19:46 Terje J. Hanssen<terjejhans...@gmail.com>
<mailto:terjejhans...@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