чт, 4 дек. 2025 г., 23:39 Terje J. Hanssen <[email protected]>:

>
>
> Den 04.12.2025 19:32, skrev Andrew Randrianasulu:
>
>
>
> чт, 4 дек. 2025 г., 21:04 Terje J. Hanssen <[email protected]>:
>
>>
>>
>> Den 04.12.2025 17:03, skrev Andrew Randrianasulu:
>>
>>
>>
>> чт, 4 дек. 2025 г., 18:22 Terje J. Hanssen <[email protected]>:
>>
>>>
>>>
>>> Den 03.12.2025 23:44, skrev Andrew Randrianasulu:
>>>
>>>
>>>
>>> ср, 3 дек. 2025 г., 23:07 Terje J. Hanssen <[email protected]>:
>>>
>>>>
>>>> Den 03.12.2025 17:05, skrev Andrew Randrianasulu:
>>>>
>>>>
>>>>
>>>> ср, 3 дек. 2025 г., 18:18 Terje J. Hanssen <[email protected]>:
>>>>
>>>>>
>>>>> Den 02.12.2025 21:18, skrev Andrew Randrianasulu:
>>>>>
>>>>>
>>>>>
>>>>> вт, 2 дек. 2025 г., 22:45 Terje J. Hanssen <[email protected]>:
>>>>>
>>>>>>
>>>>>>
>>>>>> Den 02.12.2025 15:48, skrev Andrew Randrianasulu:
>>>>>>
>>>>>> On Tue, Dec 2, 2025 at 5:11 PM Terje J. Hanssen via 
>>>>>> ffmpeg-user<[email protected]> <[email protected]> wrote:
>>>>>>
>>>>>> Hello list members
>>>>>>
>>>>>> Any ideas and suggestions to how to get ffmpeg vulkan video transcoding
>>>>>> to work?
>>>>>> All my attempts so far are unsuccessful and finish with Conversion 
>>>>>> failed!
>>>>>> Below is one code line with verbose output.
>>>>>>
>>>>>> Terje J. Hanssen
>>>>>>
>>>>>> --------
>>>>>>
>>>>>> My system and hardware
>>>>>>    Kernel: 6.12.59-1-longterm arch: x86_64 bits: 64
>>>>>>    Desktop: GNOME v: 49.1 Distro: openSUSE Tumbleweed-Slowroll 20251106
>>>>>> Graphics:   Device-1: Intel DG2 [Arc A750] driver: i915 v: kernel
>>>>>>
>>>>>> with
>>>>>> Vulkan v. 25.2.6, Mesa  v. 25.2.6 and system ffmpeg-8 v. 8.0 (from 
>>>>>> Packman)
>>>>>>
>>>>>> I can verify the following ffmpeg Vulkan video support:
>>>>>>
>>>>>> ffmpeg -hide_banner -encoders | grep vulkan
>>>>>>   V....D av1_vulkan           AV1 (Vulkan) (codec av1)
>>>>>>   V....D ffv1_vulkan          FFmpeg video codec #1 (Vulkan) (codec ffv1)
>>>>>>   V....D h264_vulkan          H.264/AVC (Vulkan) (codec h264)
>>>>>>   V....D hevc_vulkan          H.265/HEVC (Vulkan) (codec hevc)
>>>>>>
>>>>>> And by enabling both Vulkan video decode and encode support in the ANV
>>>>>> driver via the following environment variable
>>>>>>
>>>>>>          export ANV_DEBUG="video-decode,video-encode"
>>>>>>
>>>>>> I can verify the following Vulkan Video Encode support:
>>>>>>
>>>>>> vulkaninfo | grep -i encode
>>>>>>      VK_KHR_video_encode_h264                      : extension revision 
>>>>>> 14
>>>>>>      VK_KHR_video_encode_h265                      : extension revision 
>>>>>> 14
>>>>>>      VK_KHR_video_encode_queue                     : extension revision 
>>>>>> 12
>>>>>>          queueFlags                  = QUEUE_VIDEO_DECODE_BIT_KHR |
>>>>>> QUEUE_VIDEO_ENCODE_BIT_KHR
>>>>>>                  VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR
>>>>>>                  VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR
>>>>>>
>>>>>> --------
>>>>>>
>>>>>> ffmpeg -hide_banner -v verbose -init_hw_device "vulkan=vk:0" -hwaccel
>>>>>> vulkan -hwaccel_output_format vulkan -i hdv09_04.m2t -c:v h264_vulkan -y
>>>>>> hdv09_04_h264_vulkan.mp4
>>>>>>
>>>>>> I *suspect* mpeg2 decoding is not supported by Vulkan video ? Unless
>>>>>> someone reesurrect Mesa shaders that used to work at some point as
>>>>>> vulkan compute shaders ?
>>>>>>
>>>>>> Try different (h264, h265, vp9, av1) input file ?
>>>>>>
>>>>>>
>>>>>> What I can tell is that ffmpeg vulkan decoding benchmarks using mpeg2
>>>>>> seemingly has worked better for a long time according to
>>>>>> https://trac.ffmpeg.org/wiki/HWAccelIntro#Vulkan
>>>>>>
>>>>>> ffmpeg -hide_banner -init_hw_device "vulkan=vk:0" -hwaccel vulkan
>>>>>> -hwaccel_output_format vulkan -i hdv09_04.m2t -f null - -benchmark
>>>>>> .........snip
>>>>>> [mpegts @ 0x563c726901c0] PES packet size mismatch.88 bitrate=N/A
>>>>>> speed= 145x elapsed=0:00:01.50
>>>>>> [mpegts @ 0x563c726901c0] Packet corrupt (stream = 1, dts =
>>>>>> 258142320).
>>>>>> [mpeg2video @ 0x563c72653500] ac-tex damaged at 10 61
>>>>>> [mpeg2video @ 0x563c72653500] Warning MVs not available
>>>>>> [mpeg2video @ 0x563c72653500] concealing 630 DC, 630 AC, 630 MV
>>>>>> errors in P frame
>>>>>> [vist#0:0/mpeg2video @ 0x563c726e3b00] [dec:mpeg2video @
>>>>>> 0x563c726d4e40] corrupt decoded frame
>>>>>> [out#0/null @ 0x563c726d5140] video:2422KiB audio:44770KiB
>>>>>> subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead:
>>>>>> unknown
>>>>>> frame= 5963 fps=3635 q=-0.0 Lsize=N/A time=00:03:58.77 bitrate=N/A
>>>>>> speed= 146x elapsed=0:00:01.64
>>>>>> bench: utime=19.196s stime=0.323s rtime=1.641s
>>>>>> bench: maxrss=185604KiB
>>>>>>
>>>>>
>>>>> Strange, may be some software decoding fallback patch now gets broken
>>>>> in ffmpeg? URL dies not list MPEG2 as Vulkan decodeable ...
>>>>>
>>>>> Do you have older ffmpeg (7.0, 7.1) around?
>>>>>
>>>>>
>>>>>
>>>>> I reinstalled ffmpeg-7 v. 7.1  (Packman version) and retested the same
>>>>> mpeg2video (hdv1080i50.m2t) video file using the Vulkan decoding 
>>>>> benchmark.
>>>>>
>>>>> First, the normal output seemingly looks better than the previous
>>>>> ffmpeg-8 test:
>>>>>
>>>>> ffmpeg -hide_banner -init_hw_device "vulkan=vk:0" -hwaccel vulkan
>>>>> -hwaccel_output_format vulkan -i hdv09_04.m2t -f null - -benchmark
>>>>>
>>>>> .....snip
>>>>>
>>>> [mpegts @ 0x55b810d2c180] PES packet size mismatch.00 bitrate=N/A
>>>>> speed= 148x
>>>>> [mpegts @ 0x55b810d2c180] Packet corrupt (stream = 1, dts = 258142320).
>>>>> [mpeg2video @ 0x55b810cf0940] ac-tex damaged at 10 61
>>>>> [mpeg2video @ 0x55b810cf0940] Warning MVs not available
>>>>> [mpeg2video @ 0x55b810cf0940] concealing 630 DC, 630 AC, 630 MV errors
>>>>> in P frame
>>>>> [vist#0:0/mpeg2video @ 0x55b811857440] [dec:mpeg2video @
>>>>> 0x55b8118595c0] corrupt decoded frame
>>>>> [out#0/null @ 0x55b811864f80] video:2562KiB audio:44770KiB
>>>>> subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead:
>>>>> unknown
>>>>>
>>>>> frame= 5963 fps=3693 q=-0.0 Lsize=N/A time=00:03:58.77 bitrate=N/A
>>>>> speed= 148x
>>>>>
>>>>
>>>> Looking at speed I think ffmpeg 7.1 just demuxes, without even trying
>>>> to decode? Can you test with some light -c:v like again mpeg2 or mpeg4 ?
>>>>
>>>>
>>>> This is using ffmpeg-7. Please correct my code lines. I can try again
>>>> using ffmpeg-8
>>>>
>>>> ffmpeg -hide_banner -init_hw_device "vulkan=vk:0" -hwaccel vulkan
>>>> -hwaccel_output_format vulkan -i hdv09_04.m2t -c:v h264_vulkan
>>>> hdv09_04_h264_vulkan.mp4
>>>> ...............
>>>> Impossible to convert between the formats supported by the filter
>>>> 'Parsed_null_0' and the filter 'auto_scale_0'
>>>>
>>>
>>> may be try to add -noautoscale ?
>>>
>>>> I think it might fail without hwdownload,format=yuv420p filters in this
>>>> case ... But I suspect it will abort earlier?
>>>>
>>>> May be ffmpeg 8.0 (at least as build for SuSE ) just complain at
>>>> decoding moment, instead of just silently demuxing without decoding
>>>> anything?
>>>>
>>>> What happen if you set hwaccel to none or vaapi ? I guess ot should
>>>> decode in sw or via vaapi  in such cases, so there will be more realistic
>>>> decoding benchmark.
>>>>
>>>>
>>>> I think it should be -hwaccel none" , not just hwaccel.
>>>
>>> Just try to drop that part of cmd line? Ffmpeg should use software
>>> decoder in this case ....
>>>
>>> I have cleaned away some previous output and testet again with same
>>> errors below:
>>>
>>> Try -noautoscale
>>>
>>> ffmpeg -hide_banner -init_hw_device "vulkan=vk:0" -hwaccel vulkan
>>> -hwaccel_output_format vulkan -i hdv09_04.m2t -noautoscale -y -c:v
>>> h264_vulkan hdv09_04_h264_vulkan.mp4
>>> .........
>>> Impossible to convert between the formats supported by the filter
>>> 'Parsed_null_0' and the filter 'auto_scale_0'
>>> [vf#0:0 @ 0x561882873200] Error reinitializing filters!
>>> [vf#0:0 @ 0x561882873200] Task finished with error code: -38 (Function
>>> not implemented)
>>> [vf#0:0 @ 0x561882873200] Terminating thread with return code -38
>>> (Function not implemented)
>>> [vost#0:0/h264_vulkan @ 0x5618828af640] Could not open encoder before EOF
>>> [vost#0:0/h264_vulkan @ 0x5618828af640] Task finished with error code:
>>> -22 (Invalid argument)
>>> [vost#0:0/h264_vulkan @ 0x5618828af640] Terminating thread with return
>>> code -22 (Invalid argument)
>>> [out#0/mp4 @ 0x561882938cc0] 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 @ 0x5618828a3880] Qavg: 435.976
>>> Conversion failed!
>>> ---------
>>>
>>
>> then it was not it ....
>>
>>
>>
>>> Try -hwaccel none
>>>
>>> ffmpeg -hide_banner -init_hw_device "vulkan=vk:0" -hwaccel none  -i
>>> hdv09_04.m2t -vf "hwdownload,format=yuv420p" -c:v h264_vulkan
>>> hdv09_04_h264_vulkan.mp4
>>>
>>
>>
>>
>> I think you need hwupload,format=vulkan, so ffmpeg will decode in
>> software, then Upload result to vulkan device, formatted as vulkan driver
>> (?) need.
>>
>>
>> See my other examples with ffv1_vulkan (I tested with *.mts file you send
>> me earlier, it worked with -vf hwupload,format=vulkan" even if hwaccel was
>> set to vulkan for input file.)
>>
>> ffmpeg -init_hw_device vulkan -i 20081103140154.m2t -an -vf
>> hwupload,format=vulkan  -level 4 -strict -2 -c:v ffv1_vulkan -frames 200
>> v.mkv
>>
>>
>> So I think this part (decoding in software if hwaccel failed to contain
>> codec) works ok ...
>>
>>
>> ffv1_vulkan works fine for me too - here with ffmpeg-8 and also without
>> export variables set(!?)
>>
>
>
> Because it uses Vulkan compute shaders, not dedicated media engines ....
>
>
>
>> ffmpeg -hide_banner -init_hw_device vulkan -i 20081103140154.m2t -vf
>> hwupload,format=vulkan  -level 4 -strict -2 -c:v ffv1_vulkan -y -frames 200
>> 20081103140154_m2t_ffv1_vulkan.mkv
>>
>> [mpegts @ 0x5582928a53c0] stream 0 : no PTS found at end of file,
>> duration not set
>> [mpegts @ 0x5582928a53c0] Could not find codec parameters for stream 2
>> (Unknown: none ([160][0][0][0] / 0x00A0)): unknown codec
>> Consider increasing the value for the 'analyzeduration' (0) and
>> 'probesize' (5000000) options
>> [mpegts @ 0x5582928a53c0] Could not find codec parameters for stream 3
>> (Unknown: none ([161][0][0][0] / 0x00A1)): unknown codec
>> Consider increasing the value for the 'analyzeduration' (0) and
>> 'probesize' (5000000) options
>>
>> Input #0, mpegts, from '20081103140154.m2t':
>>   Duration: 00:00:13.44, start: 1042.400000, bitrate: 26598 kb/s
>>   Program 100
>>   Stream #0:0[0x810]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002),
>> yuv420p(tv, bt709, top first), 1440x1080 [SAR 4:3 DAR 16:9], 25000 kb/s, 25
>> fps, 25 tbr, 90k tbn, start 1042.480000
>>     Side data:
>>       cpb: bitrate max/min/avg: 25000000/0/0 buffer size: 7340032
>> vbv_delay: N/A
>>   Stream #0:1[0x814]: Audio: mp2 (mp3float) ([3][0][0][0] / 0x0003),
>> 48000 Hz, stereo, fltp, 384 kb/s, start 1042.400000
>>   Stream #0:2[0x815]: Unknown: none ([160][0][0][0] / 0x00A0), start
>> 1042.400000
>>   Stream #0:3[0x811]: Unknown: none ([161][0][0][0] / 0x00A1), start
>> 1042.400000
>> [aost#0:1/libopus @ 0x55829286b880] Applying unspecific -frames to non
>> video streams, maybe you meant -vframes ?
>> Stream mapping:
>>   Stream #0:0 -> #0:0 (mpeg2video (native) -> ffv1 (ffv1_vulkan))
>>   Stream #0:1 -> #0:1 (mp2 (native) -> opus (libopus))
>> Press [q] to stop, [?] for help
>> [libopus @ 0x55829286bb00] No bit rate set. Defaulting to 96000 bps.
>> [ffv1_vulkan @ 0x5582928f5b00] Async buffers: 2MiB per context, 2MiB
>> total, depth: 1
>>
>> Output #0, matroska, to '20081103140154_m2t_ffv1_vulkan.mkv':
>>   Metadata:
>>     encoder         : Lavf62.3.100
>>   Stream #0:0: Video: ffv1 (FFV1 / 0x31564646), vulkan(tv, bt709, top
>> coded first (swapped)), 1440x1080 [SAR 4:3 DAR 16:9], q=2-31, 200 kb/s, 25
>> fps, 1k tbn
>>     Metadata:
>>       encoder         : Lavc62.11.100 ffv1_vulkan
>>   Stream #0:1: Audio: opus ([255][255][255][255] / 0xFFFFFFFF), 48000 Hz,
>> stereo, s16, 96 kb/s
>>     Metadata:
>>       encoder         : Lavc62.11.100 libopus
>> [out#0/matroska @ 0x5582933d5b80] video:74790KiB audio:39KiB
>> subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead:
>> 0.008941%
>>
>> frame=  100 fps= 27 q=-0.0 Lsize=   74835KiB time=00:00:04.00
>> bitrate=153263.1kbits/s speed= 1.1x elapsed=0:00:03.63
>>
>> ----------------------
>>
>> But why not the equivalent cmd with h264_vulkan? Had to set export
>> variables here:
>>
>> ffmpeg -hide_banner -init_hw_device vulkan -i hdv09_04.m2t -vf
>> hwupload,format=vulkan -c:v h264_vulkan -y hdv09_04_h264_vulkan.mp4
>>
>> [mpeg2video @ 0x556d16801180] Invalid frame dimensions 0x0.
>>     Last message repeated 3 times
>> [mpegts @ 0x556d1687c280] PES packet size mismatch
>> [mpegts @ 0x556d1687c280] Packet corrupt (stream = 1, dts = 258142320).
>> [mpegts @ 0x556d1687c280] Could not find codec parameters for stream 2
>> (Unknown: none ([160][0][0][0] / 0x00A0)): unknown codec
>> Consider increasing the value for the 'analyzeduration' (0) and
>> 'probesize' (5000000) options
>> [mpegts @ 0x556d1687c280] Could not find codec parameters for stream 3
>> (Unknown: none ([161][0][0][0] / 0x00A1)): unknown codec
>> Consider increasing the value for the 'analyzeduration' (0) and
>> 'probesize' (5000000) options
>>
>> Input #0, mpegts, from 'hdv09_04.m2t':
>>   Duration: 00:03:59.06, start: 2629.496000, bitrate: 26110 kb/s
>>   Program 100
>>   Stream #0:0[0x810]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002),
>> yuv420p(tv, bt709, top first), 1440x1080 [SAR 4:3 DAR 16:9], 25000 kb/s, 25
>> fps, 25 tbr, 90k tbn, start 2629.680000
>>     Side data:
>>       cpb: bitrate max/min/avg: 25000000/0/0 buffer size: 7340032
>> vbv_delay: N/A
>>   Stream #0:1[0x814]: Audio: mp2 (mp3float) ([3][0][0][0] / 0x0003),
>> 48000 Hz, stereo, fltp, 384 kb/s, start 2629.496000
>>   Stream #0:2[0x815]: Unknown: none ([160][0][0][0] / 0x00A0), start
>> 2629.496000
>>   Stream #0:3[0x811]: Unknown: none ([161][0][0][0] / 0x00A1), start
>> 2629.496000
>> Stream mapping:
>>   Stream #0:0 -> #0:0 (mpeg2video (native) -> h264 (h264_vulkan))
>>   Stream #0:1 -> #0:1 (mp2 (native) -> aac (native))
>> Press [q] to stop, [?] for help
>>
>> [h264_vulkan @ 0x556d16840700] No rate control settings specified, using
>> fixed QP = 18
>> [h264_vulkan @ 0x556d16840700] Pixel format yuv420p of input frames not
>> supported!
>>
>
> Oh, it failed to convert pixelformat? May be rearrange hwupload and
> format, so format goes first? Or even surround hwupload by two
> format=vulkan filters?
>
> At least now it tries to initialize Vulkan h264 encoder ...
>
> You can also try to add -profile:v main so encoder hopefully will try
> something relatively common first ?
>
>
> Sorry, all these attempts bring back the initial errors, so far:
>
> Impossible to convert between the formats supported by the filter 'graph
> -1 input from stream 0:0' and the filter 'auto_scale_0'
> Link 'graph -1 input from stream 0:0.default' -> 'auto_scale_0.default':
>   src: yuv420p
>   dst: yuv420p
>
>
There is open bug from more than year ago:
https://gitlab.freedesktop.org/mesa/mesa/-/issues/11969

try some examples from there?

may be try -vf hwupload,format=nv12

May be chime in and update bug with new Mesa/ffmpeg version?




ffmpeg -hide_banner -init_hw_device vulkan -i hdv09_04.m2t -vf
> format=vulkan,hwupload -c:v h264_vulkan -y hdv09_04_h264_vulkan.mp4
> ....
> ffmpeg -hide_banner -init_hw_device vulkan -i hdv09_04.m2t -vf
> format=vulkan,hwupload,format=vulkan -c:v h264_vulkan -y
> hdv09_04_h264_vulkan.mp4
> .....
> ffmpeg -hide_banner -init_hw_device vulkan -i hdv09_04.m2t -vf
> format=vulkan,hwupload -c:v h264_vulkan -profile:v main -y
> hdv09_04_h264_vulkan.mp4
> .....
> ffmpeg -hide_banner -init_hw_device vulkan -i hdv09_04.m2t -vf
> format=vulkan,hwupload,format=vulkan -c:v h264_vulkan -profile:v main -y
> hdv09_04_h264_vulkan.mp4
> .........
> Impossible to convert between the formats supported by the filter 'graph
> -1 input from stream 0:0' and the filter 'auto_scale_0'
> Link 'graph -1 input from stream 0:0.default' -> 'auto_scale_0.default':
>   src: yuv420p
>   dst: yuv420p
> [vf#0:0 @ 0x562bf9282f40] Error reinitializing filters!
> [vf#0:0 @ 0x562bf9282f40] Task finished with error code: -38 (Function not
> implemented)
> [vf#0:0 @ 0x562bf9282f40] Terminating thread with return code -38
> (Function not implemented)
> [vost#0:0/h264_vulkan @ 0x562bf9282900] [enc:h264_vulkan @ 0x562bf9285240]
> Could not open encoder before EOF
> [vost#0:0/h264_vulkan @ 0x562bf9282900] Task finished with error code: -22
> (Invalid argument)
> [vost#0:0/h264_vulkan @ 0x562bf9282900] Terminating thread with return
> code -22 (Invalid argument)
> [out#0/mp4 @ 0x562bfa06c0c0] 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
> elapsed=0:00:00.02
> [aac @ 0x562bf930f440] Qavg: 174.158
> Conversion failed!
>
_______________________________________________
ffmpeg-user mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to