[FFmpeg-trac] #11219(avcodec:new): On the state of Vulkan video encoding on Intel and NVIDIA Hardware

FFmpeg trac at avcodec.org
Wed Oct 2 05:51:15 EEST 2024


#11219: On the state of Vulkan video encoding on Intel and NVIDIA Hardware
-------------------------------------+-------------------------------------
             Reporter:  Dennis E.    |                     Type:  defect
  Mungai                             |
               Status:  new          |                 Priority:  normal
            Component:  avcodec      |                  Version:  git-
             Keywords:               |  master
  hevc_vulkan,h264_vulkan,libplacebo,vulkan|               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Hello there,

 I have had the chance to test the Vulkan video encoding stack on the
 current ffmpeg git tip, on both Intel and NVIDIA platforms, as shown
 below.

 So far, basic pipelines work as expected. However, more common use cases
 that involve handling of Vulcan-based decoding, HDR signalling and
 filtering (with the likes of {{{libplacebo}}}, etc, (as advertised to be
 near-feature parity with VAAPI), often fail, as shown in the examples
 below.

 **Platform info:**

 **(a). Intel:**


 {{{

 ffmpeg -v verbose -init_hw_device vulkan
 ffmpeg version N-117283-gffe419d3a3 Copyright (c) 2000-2024 the FFmpeg
 developers
   built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
   configuration: --libdir=/usr/local/lib --enable-shared --disable-debug
 --disable-doc --disable-htmlpages --disable-manpages --disable-podpages
 --disable-txtpages --disable-ffplay --enable-alsa --enable-cuvid --enable-
 libplacebo --enable-librav1e --enable-libdav1d --enable-libshaderc
 --enable-libv4l2 --enable-libvmaf --enable-libvpl --enable-libxml2
 --enable-nvdec --enable-nvenc --enable-cuda-llvm --nvcc=clang --nvccflags
 ='--cuda-gpu-arch=sm_60 -O2' --enable-opencl --enable-vaapi --enable-vdpau
 --enable-version3 --enable-vulkan --enable-libopencore-amrnb --enable-
 libopencore-amrwb --enable-gpl --enable-libass --enable-fontconfig
 --enable-libfreetype --enable-libvidstab --enable-libharfbuzz --enable-
 libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis
 --enable-libvpx --enable-libwebp --enable-libx265 --enable-libsvtav1
 --enable-libx264 --enable-nonfree --enable-openssl --enable-lzma --enable-
 zlib --enable-gmp --enable-libfdk_aac --enable-postproc --enable-libzmq
 --enable-lv2 --enable-ladspa --enable-libxeve --enable-libxevd --enable-
 liblcevc-dec --enable-libzvbi --enable-decklink --enable-libklvanc
 --enable-libopenjpeg --enable-libjxl --enable-libzimg --enable-
 pocketsphinx --enable-libmysofa --enable-libquirc --enable-libqrencode
 --enable-libkvazaar --enable-libaom --enable-libsrt --enable-librist
 --extra-libs='-lpthread -lm -lz -ldl' --extra-cflags=-I/tmp/workdir
 /Blackmagic-SDK-14/Linux/include/
   libavutil      59. 40.100 / 59. 40.100
   libavcodec     61. 20.100 / 61. 20.100
   libavformat    61.  9.100 / 61.  9.100
   libavdevice    61.  4.100 / 61.  4.100
   libavfilter    10.  6.100 / 10.  6.100
   libswscale      8.  4.100 /  8.  4.100
   libswresample   5.  4.100 /  5.  4.100
   libpostproc    58.  4.100 / 58.  4.100
 [AVHWDeviceContext @ 0x589b038cdf00] Supported layers:
 [AVHWDeviceContext @ 0x589b038cdf00]    VK_LAYER_MESA_device_select
 [AVHWDeviceContext @ 0x589b038cdf00]    VK_LAYER_MESA_overlay
 [AVHWDeviceContext @ 0x589b038cdf00] Using instance extension
 VK_KHR_portability_enumeration
 [AVHWDeviceContext @ 0x589b038cdf00] GPU listing:
 [AVHWDeviceContext @ 0x589b038cdf00]     0: Intel(R) Graphics (RPL-P)
 (integrated) (0xa7a0)
 [AVHWDeviceContext @ 0x589b038cdf00] Device 0 selected: Intel(R) Graphics
 (RPL-P) (integrated) (0xa7a0)
 [AVHWDeviceContext @ 0x589b038cdf00] Using device extension
 VK_KHR_push_descriptor
 [AVHWDeviceContext @ 0x589b038cdf00] Using device extension
 VK_EXT_descriptor_buffer
 [AVHWDeviceContext @ 0x589b038cdf00] Using device extension
 VK_EXT_physical_device_drm
 [AVHWDeviceContext @ 0x589b038cdf00] Using device extension
 VK_EXT_shader_atomic_float
 [AVHWDeviceContext @ 0x589b038cdf00] Using device extension
 VK_KHR_cooperative_matrix
 [AVHWDeviceContext @ 0x589b038cdf00] Using device extension
 VK_KHR_video_maintenance1
 [AVHWDeviceContext @ 0x589b038cdf00] Using device extension
 VK_KHR_external_memory_fd
 [AVHWDeviceContext @ 0x589b038cdf00] Using device extension
 VK_EXT_external_memory_dma_buf
 [AVHWDeviceContext @ 0x589b038cdf00] Using device extension
 VK_EXT_image_drm_format_modifier
 [AVHWDeviceContext @ 0x589b038cdf00] Using device extension
 VK_KHR_external_semaphore_fd
 [AVHWDeviceContext @ 0x589b038cdf00] Using device extension
 VK_EXT_external_memory_host
 [AVHWDeviceContext @ 0x589b038cdf00] Using device extension
 VK_KHR_video_queue
 [AVHWDeviceContext @ 0x589b038cdf00] Using device extension
 VK_KHR_video_encode_queue
 [AVHWDeviceContext @ 0x589b038cdf00] Using device extension
 VK_KHR_video_decode_queue
 [AVHWDeviceContext @ 0x589b038cdf00] Using device extension
 VK_KHR_video_encode_h264
 [AVHWDeviceContext @ 0x589b038cdf00] Using device extension
 VK_KHR_video_decode_h264
 [AVHWDeviceContext @ 0x589b038cdf00] Using device extension
 VK_KHR_video_encode_h265
 [AVHWDeviceContext @ 0x589b038cdf00] Using device extension
 VK_KHR_video_decode_h265
 [AVHWDeviceContext @ 0x589b038cdf00] Queue families:
 [AVHWDeviceContext @ 0x589b038cdf00]     0: graphics compute transfer
 sparse protected (queues: 1)
 [AVHWDeviceContext @ 0x589b038cdf00]     1: encode decode (queues: 2)
 [AVHWDeviceContext @ 0x589b038cdf00] Using device: Intel(R) Graphics
 (RPL-P)
 [AVHWDeviceContext @ 0x589b038cdf00] Alignments:
 [AVHWDeviceContext @ 0x589b038cdf00]
 optimalBufferCopyRowPitchAlignment: 128
 [AVHWDeviceContext @ 0x589b038cdf00]     minMemoryMapAlignment:
 4096
 [AVHWDeviceContext @ 0x589b038cdf00]     nonCoherentAtomSize:
 64
 [AVHWDeviceContext @ 0x589b038cdf00]     minImportedHostPointerAlignment:
 4096
 [AVHWDeviceContext @ 0x589b038cdf00] Using queue family 0 (queues: 1) for
 graphics compute transfers
 [AVHWDeviceContext @ 0x589b038cdf00] Using queue family 1 (queues: 2) for
 encode decode
 }}}


 I've tested this implementation on Intel's ANV driver.

 This was built against the mesa main branch, which now has the enablement
 bits for  {{{KHR_video_maintenance1}}} on anv.
 See the related MR
 https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31436

 Also, the environment variables:
 {{{
 ANV_VIDEO_ENCODE=1
 ANV_VIDEO_DECODE=1
 }}}

 Are also set.

 **i. With hwaccel:**


 {{{
 ffmpeg \
 -init_hw_device vaapi=intel:/dev/dri/renderD128 \
 -init_hw_device vulkan=vk at intel \
 -hwaccel vulkan -hwaccel_output_format vulkan \
 -hwaccel_device vk -filter_hw_device vk \
 -loglevel info \
 -fflags +genpts \
 -i '4KIOS.mov' \
 -vf "libplacebo=w=1920:h=1080" \
 -b:v 2250k -minrate:v 2250k -maxrate:v 2250k -bufsize:v 2250k -c:v
 hevc_vulkan \
 -r:v 60 -g:v 120 -tune:v hq -usage:v transcode \
 -async_depth:v 4 -b_depth:v 1 -bf:v 0 \
 -c:a libfdk_aac -b:a 128k -ar 48000 -ac 2 \
 -map "0:v" -map "0:a" \
 -max_delay 5000000 -max_muxing_queue_size 8192 -max_interleave_delta 0 \
 -flags -global_header+cgop \
 -y -f mpegts "ticket0.ts"
 }}}

 **Output:**

 {{{
 ffmpeg version N-117283-gffe419d3a3 Copyright (c) 2000-2024 the FFmpeg
 developers
   built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
   configuration: --libdir=/usr/local/lib --enable-shared --disable-debug
 --disable-doc --disable-htmlpages --disable-manpages --disable-podpages
 --disable-txtpages --disable-ffplay --enable-alsa --enable-cuvid --enable-
 libplacebo --enable-librav1e --enable-libdav1d --enable-libshaderc
 --enable-libv4l2 --enable-libvmaf --enable-libvpl --enable-libxml2
 --enable-nvdec --enable-nvenc --enable-cuda-llvm --nvcc=clang --nvccflags
 ='--cuda-gpu-arch=sm_60 -O2' --enable-opencl --enable-vaapi --enable-vdpau
 --enable-version3 --enable-vulkan --enable-libopencore-amrnb --enable-
 libopencore-amrwb --enable-gpl --enable-libass --enable-fontconfig
 --enable-libfreetype --enable-libvidstab --enable-libharfbuzz --enable-
 libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis
 --enable-libvpx --enable-libwebp --enable-libx265 --enable-libsvtav1
 --enable-libx264 --enable-nonfree --enable-openssl --enable-lzma --enable-
 zlib --enable-gmp --enable-libfdk_aac --enable-postproc --enable-libzmq
 --enable-lv2 --enable-ladspa --enable-libxeve --enable-libxevd --enable-
 liblcevc-dec --enable-libzvbi --enable-decklink --enable-libklvanc
 --enable-libopenjpeg --enable-libjxl --enable-libzimg --enable-
 pocketsphinx --enable-libmysofa --enable-libquirc --enable-libqrencode
 --enable-libkvazaar --enable-libaom --enable-libsrt --enable-librist
 --extra-libs='-lpthread -lm -lz -ldl' --extra-cflags=-I/tmp/workdir
 /Blackmagic-SDK-14/Linux/include/
   libavutil      59. 40.100 / 59. 40.100
   libavcodec     61. 20.100 / 61. 20.100
   libavformat    61.  9.100 / 61.  9.100
   libavdevice    61.  4.100 / 61.  4.100
   libavfilter    10.  6.100 / 10.  6.100
   libswscale      8.  4.100 /  8.  4.100
   libswresample   5.  4.100 /  5.  4.100
   libpostproc    58.  4.100 / 58.  4.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '4KIOS.mov':
   Metadata:
     major_brand     : qt
     minor_version   : 0
     compatible_brands: qt
     creation_time   : 2016-01-30T17:46:24.000000Z
     com.apple.quicktime.location.ISO6709: +33.9173-084.0055+294.114/
     com.apple.quicktime.make: Apple
     com.apple.quicktime.model: iPhone 6s
     com.apple.quicktime.software: 9.2.1
     com.apple.quicktime.creationdate: 2016-01-30T12:46:24-0500
   Duration: 00:00:18.55, start: 0.000000, bitrate: 51218 kb/s
   Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661),
 yuv420p(tv, bt709, progressive), 3840x2160, 51119 kb/s, 29.98 fps, 29.97
 tbr, 600 tbn (default)
     Metadata:
       creation_time   : 2016-01-30T17:46:24.000000Z
       handler_name    : Core Media Video
       vendor_id       : [0][0][0][0]
       encoder         : H.264
   Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz,
 mono, fltp, 86 kb/s (default)
     Metadata:
       creation_time   : 2016-01-30T17:46:24.000000Z
       handler_name    : Core Media Audio
       vendor_id       : [0][0][0][0]
   Stream #0:2[0x3](und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
     Metadata:
       creation_time   : 2016-01-30T17:46:24.000000Z
       handler_name    : Core Media Metadata
   Stream #0:3[0x4](und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
     Metadata:
       creation_time   : 2016-01-30T17:46:24.000000Z
       handler_name    : Core Media Metadata
 Stream mapping:
   Stream #0:0 -> #0:0 (h264 (native) -> hevc (hevc_vulkan))
   Stream #0:1 -> #0:1 (aac (native) -> aac (libfdk_aac))
 Press [q] to stop, [?] for help
 MESA-INTEL: warning: ../src/intel/vulkan/anv_formats.c:811: FINISHME:
 support more multi-planar formats with DRM modifiers
 Output #0, mpegts, to 'ticket0.ts':
   Metadata:
     major_brand     : qt
     minor_version   : 0
     compatible_brands: qt
     com.apple.quicktime.creationdate: 2016-01-30T12:46:24-0500
     com.apple.quicktime.location.ISO6709: +33.9173-084.0055+294.114/
     com.apple.quicktime.make: Apple
     com.apple.quicktime.model: iPhone 6s
     com.apple.quicktime.software: 9.2.1
     encoder         : Lavf61.9.100
   Stream #0:0(und): Video: hevc (Main), vulkan(tv, bt709, progressive),
 1920x1080, q=2-31, 2250 kb/s, 60 fps, 90k tbn (default)
     Metadata:
       encoder         : Lavc61.20.100 hevc_vulkan
       creation_time   : 2016-01-30T17:46:24.000000Z
       handler_name    : Core Media Video
       vendor_id       : [0][0][0][0]
   Stream #0:1(und): Audio: aac, 48000 Hz, stereo, s16, 128 kb/s (default)
     Metadata:
       encoder         : Lavc61.20.100 libfdk_aac
       creation_time   : 2016-01-30T17:46:24.000000Z
       handler_name    : Core Media Audio
       vendor_id       : [0][0][0][0]
 frame=    1 fps=0.0 q=-0.0 size=     256KiB time=00:00:00.01 bitraframe=
 1 fps=1.0 q=-0.0 size=     256KiB time=00:00:00.01 bitra[hevc_vulkan @
 0x5720d9a16280] Unable to perform query: VK_ERROR_DEVICE_LOST!
 [hevc_vulkan @ 0x5720d9a16280] Output failed: -542398533.
 [vost#0:0/hevc_vulkan @ 0x5720d9a190c0] [enc:hevc_vulkan @ 0x5720d9a12c80]
 Error submitting video frame to the encoder
 [vost#0:0/hevc_vulkan @ 0x5720d9a190c0] [enc:hevc_vulkan @ 0x5720d9a12c80]
 Error encoding a frame: Generic error in an external library
 [vost#0:0/hevc_vulkan @ 0x5720d9a190c0] Task finished with error code:
 -542398533 (Generic error in an external library)
 [vost#0:0/hevc_vulkan @ 0x5720d9a190c0] Terminating thread with return
 code -542398533 (Generic error in an external library)
 [libplacebo @ 0x796454004140] vkQueueSubmit2: VK_ERROR_DEVICE_LOST
 (../src/vulkan/command.c:504)
 [libplacebo @ 0x796454004140] Attempting to release an unheld image?
     Last message repeated 1 times
 [libplacebo @ 0x796454004140] vkQueueSubmit2: VK_ERROR_DEVICE_LOST
 (../src/vulkan/command.c:504)
 [libplacebo @ 0x796454004140] Retrieving query pool results:
 VK_ERROR_DEVICE_LOST (../src/vulkan/gpu.c:105)
 [libplacebo @ 0x796454004140] vkQueueSubmit2: VK_ERROR_DEVICE_LOST
 (../src/vulkan/command.c:504)
 [libplacebo @ 0x796454004140] Retrieving query pool results:
 VK_ERROR_DEVICE_LOST (../src/vulkan/gpu.c:105)
 [libplacebo @ 0x796454004140] vkQueueSubmit2: VK_ERROR_DEVICE_LOST
 (../src/vulkan/command.c:504)
 [libplacebo @ 0x796454004140] Retrieving query pool results:
 VK_ERROR_DEVICE_LOST (../src/vulkan/gpu.c:105)
 [libplacebo @ 0x796454004140] vkQueueSubmit2: VK_ERROR_DEVICE_LOST
 (../src/vulkan/command.c:504)
 [libplacebo @ 0x796454004140] Retrieving query pool results:
 VK_ERROR_DEVICE_LOST (../src/vulkan/gpu.c:105)
 [h264 @ 0x5720d9a130c0] [vk @ 0x79643417da00] Unable to submit command
 buffer: VK_ERROR_DEVICE_LOST
 [h264 @ 0x5720d9a130c0] hardware accelerator failed to decode picture
 [libplacebo @ 0x796454004140] vkQueueSubmit2: VK_ERROR_DEVICE_LOST
 (../src/vulkan/command.c:504)
 [libplacebo @ 0x796454004140] Retrieving query pool results:
 VK_ERROR_DEVICE_LOST (../src/vulkan/gpu.c:105)
 [libplacebo @ 0x796454004140] vkQueueSubmit2: VK_ERROR_DEVICE_LOST
 (../src/vulkan/command.c:504)
 [libplacebo @ 0x796454004140] Retrieving query pool results:
 VK_ERROR_DEVICE_LOST (../src/vulkan/gpu.c:105)
 [libplacebo @ 0x796454004140] vkQueueSubmit2: VK_ERROR_DEVICE_LOST
 (../src/vulkan/command.c:504)
 [libplacebo @ 0x796454004140] Retrieving query pool results:
 VK_ERROR_DEVICE_LOST (../src/vulkan/gpu.c:105)
 [libplacebo @ 0x796454004140] vkQueueSubmit2: VK_ERROR_DEVICE_LOST
 (../src/vulkan/command.c:504)
     Last message repeated 1 times
 [out#0/mpegts @ 0x5720d9a46dc0] video:260KiB audio:291KiB subtitle:0KiB
 other streams:0KiB global headers:0KiB muxing overhead: 12.472680%
 frame=    1 fps=0.8 q=-0.0 Lsize=     620KiB time=00:00:00.01
 bitrate=304553.9kbits/s dup=8 drop=0 speed=0.0139x
 }}}

 **ii. And without H/W accelerated decoding, ie -hwaccel vulkan is
 disabled:**

 {{{
 ffmpeg -v debug \
 -init_hw_device vaapi=intel:/dev/dri/renderD128 \
 -init_hw_device vulkan=vk at intel \
 -filter_hw_device vk \
 -loglevel info \
 -fflags +genpts \
 -i '4KIOS.mov' \
 -vf "hwupload,libplacebo=w=1920:h=1080:format=nv12" \
 -b:v 2250k -minrate:v 2250k -maxrate:v 2250k -bufsize:v 2250k -c:v
 hevc_vulkan \
 -r:v 60 -g:v 120 -tune:v hq -usage:v transcode \
 -async_depth:v 4 -b_depth:v 1 -bf:v 0 \
 -c:a libfdk_aac -b:a 128k -ar 48000 -ac 2 \
 -map "0:v" -map "0:a" \
 -noautoscale -max_delay 5000000 -max_muxing_queue_size 8192
 -max_interleave_delta 0 \
 -flags -global_header+cgop \
 -y -f mpegts "ticket1.ts"
 }}}


 **Output:**

 {{{
 ffmpeg version N-117283-gffe419d3a3 Copyright (c) 2000-2024 the FFmpeg
 developers
   built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
   configuration: --libdir=/usr/local/lib --enable-shared --disable-debug
 --disable-doc --disable-htmlpages --disable-manpages --disable-podpages
 --disable-txtpages --disable-ffplay --enable-alsa --enable-cuvid --enable-
 libplacebo --enable-librav1e --enable-libdav1d --enable-libshaderc
 --enable-libv4l2 --enable-libvmaf --enable-libvpl --enable-libxml2
 --enable-nvdec --enable-nvenc --enable-cuda-llvm --nvcc=clang --nvccflags
 ='--cuda-gpu-arch=sm_60 -O2' --enable-opencl --enable-vaapi --enable-vdpau
 --enable-version3 --enable-vulkan --enable-libopencore-amrnb --enable-
 libopencore-amrwb --enable-gpl --enable-libass --enable-fontconfig
 --enable-libfreetype --enable-libvidstab --enable-libharfbuzz --enable-
 libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis
 --enable-libvpx --enable-libwebp --enable-libx265 --enable-libsvtav1
 --enable-libx264 --enable-nonfree --enable-openssl --enable-lzma --enable-
 zlib --enable-gmp --enable-libfdk_aac --enable-postproc --enable-libzmq
 --enable-lv2 --enable-ladspa --enable-libxeve --enable-libxevd --enable-
 liblcevc-dec --enable-libzvbi --enable-decklink --enable-libklvanc
 --enable-libopenjpeg --enable-libjxl --enable-libzimg --enable-
 pocketsphinx --enable-libmysofa --enable-libquirc --enable-libqrencode
 --enable-libkvazaar --enable-libaom --enable-libsrt --enable-librist
 --extra-libs='-lpthread -lm -lz -ldl' --extra-cflags=-I/tmp/workdir
 /Blackmagic-SDK-14/Linux/include/
   libavutil      59. 40.100 / 59. 40.100
   libavcodec     61. 20.100 / 61. 20.100
   libavformat    61.  9.100 / 61.  9.100
   libavdevice    61.  4.100 / 61.  4.100
   libavfilter    10.  6.100 / 10.  6.100
   libswscale      8.  4.100 /  8.  4.100
   libswresample   5.  4.100 /  5.  4.100
   libpostproc    58.  4.100 / 58.  4.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '4KIOS.mov':
   Metadata:
     major_brand     : qt
     minor_version   : 0
     compatible_brands: qt
     creation_time   : 2016-01-30T17:46:24.000000Z
     com.apple.quicktime.location.ISO6709: +33.9173-084.0055+294.114/
     com.apple.quicktime.make: Apple
     com.apple.quicktime.model: iPhone 6s
     com.apple.quicktime.software: 9.2.1
     com.apple.quicktime.creationdate: 2016-01-30T12:46:24-0500
   Duration: 00:00:18.55, start: 0.000000, bitrate: 51218 kb/s
   Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661),
 yuv420p(tv, bt709, progressive), 3840x2160, 51119 kb/s, 29.98 fps, 29.97
 tbr, 600 tbn (default)
     Metadata:
       creation_time   : 2016-01-30T17:46:24.000000Z
       handler_name    : Core Media Video
       vendor_id       : [0][0][0][0]
       encoder         : H.264
   Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz,
 mono, fltp, 86 kb/s (default)
     Metadata:
       creation_time   : 2016-01-30T17:46:24.000000Z
       handler_name    : Core Media Audio
       vendor_id       : [0][0][0][0]
   Stream #0:2[0x3](und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
     Metadata:
       creation_time   : 2016-01-30T17:46:24.000000Z
       handler_name    : Core Media Metadata
   Stream #0:3[0x4](und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
     Metadata:
       creation_time   : 2016-01-30T17:46:24.000000Z
       handler_name    : Core Media Metadata
 Stream mapping:
   Stream #0:0 -> #0:0 (h264 (native) -> hevc (hevc_vulkan))
   Stream #0:1 -> #0:1 (aac (native) -> aac (libfdk_aac))
 Press [q] to stop, [?] for help
 MESA-INTEL: warning: ../src/intel/vulkan/anv_formats.c:811: FINISHME:
 support more multi-planar formats with DRM modifiers
 Output #0, mpegts, to 'ticket1.ts':
   Metadata:
     major_brand     : qt
     minor_version   : 0
     compatible_brands: qt
     com.apple.quicktime.creationdate: 2016-01-30T12:46:24-0500
     com.apple.quicktime.location.ISO6709: +33.9173-084.0055+294.114/
     com.apple.quicktime.make: Apple
     com.apple.quicktime.model: iPhone 6s
     com.apple.quicktime.software: 9.2.1
     encoder         : Lavf61.9.100
   Stream #0:0(und): Video: hevc (Main), vulkan(tv, bt709, progressive),
 1920x1080, q=2-31, 2250 kb/s, 60 fps, 90k tbn (default)
     Metadata:
       encoder         : Lavc61.20.100 hevc_vulkan
       creation_time   : 2016-01-30T17:46:24.000000Z
       handler_name    : Core Media Video
       vendor_id       : [0][0][0][0]
   Stream #0:1(und): Audio: aac, 48000 Hz, stereo, s16, 128 kb/s (default)
     Metadata:
       encoder         : Lavc61.20.100 libfdk_aac
       creation_time   : 2016-01-30T17:46:24.000000Z
       handler_name    : Core Media Audio
       vendor_id       : [0][0][0][0]
 [hevc_vulkan @ 0x56d91fd19480] Encode failed: -1073731200.
 [vost#0:0/hevc_vulkan @ 0x56d91fd76cc0] [enc:hevc_vulkan @ 0x56d91fdaa140]
 Error submitting video frame to the encoder
 [vost#0:0/hevc_vulkan @ 0x56d91fd76cc0] [enc:hevc_vulkan @ 0x56d91fdaa140]
 Error encoding a frame: Error number -1073731200 occurred
 [vost#0:0/hevc_vulkan @ 0x56d91fd76cc0] Task finished with error code:
 -1073731200 (Error number -1073731200 occurred)
 [vost#0:0/hevc_vulkan @ 0x56d91fd76cc0] Terminating thread with return
 code -1073731200 (Error number -1073731200 occurred)
 [out#0/mpegts @ 0x56d91fda12c0] video:0KiB audio:291KiB subtitle:0KiB
 other streams:0KiB global headers:0KiB muxing overhead: 21.645238%
 frame=    0 fps=0.0 q=0.0 Lsize=     354KiB time=N/A bitrate=N/A dup=2
 drop=0 speed=N/A
 Conversion failed!
 }}}


 Both encoding scenarios fail. Now, on to testing with NVIDIA.

 **(b). NVIDIA:**

 **Platform info:**

 {{{
 ffmpeg -v verbose -init_hw_device vulkan
 ffmpeg version N-117283-gffe419d3a3 Copyright (c) 2000-2024 the FFmpeg
 developers
   built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
   configuration: --libdir=/usr/local/lib --enable-shared --disable-debug
 --disable-doc --disable-htmlpages --disable-manpages --disable-podpages
 --disable-txtpages --disable-ffplay --enable-alsa --enable-cuvid --enable-
 libplacebo --enable-librav1e --enable-libdav1d --enable-libshaderc
 --enable-libv4l2 --enable-libvmaf --enable-libvpl --enable-libxml2
 --enable-nvdec --enable-nvenc --enable-cuda-llvm --nvcc=clang --nvccflags
 ='--cuda-gpu-arch=sm_60 -O2' --enable-opencl --enable-vaapi --enable-vdpau
 --enable-version3 --enable-vulkan --enable-libopencore-amrnb --enable-
 libopencore-amrwb --enable-gpl --enable-libass --enable-fontconfig
 --enable-libfreetype --enable-libvidstab --enable-libharfbuzz --enable-
 libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis
 --enable-libvpx --enable-libwebp --enable-libx265 --enable-libsvtav1
 --enable-libx264 --enable-nonfree --enable-openssl --enable-lzma --enable-
 zlib --enable-gmp --enable-libfdk_aac --enable-postproc --enable-libzmq
 --enable-lv2 --enable-ladspa --enable-libxeve --enable-libxevd --enable-
 liblcevc-dec --enable-libzvbi --enable-decklink --enable-libklvanc
 --enable-libopenjpeg --enable-libjxl --enable-libzimg --enable-
 pocketsphinx --enable-libmysofa --enable-libquirc --enable-libqrencode
 --enable-libkvazaar --enable-libaom --enable-libsrt --enable-librist
 --extra-libs='-lpthread -lm -lz -ldl' --extra-cflags=-I/tmp/workdir
 /Blackmagic-SDK-14/Linux/include/
   libavutil      59. 40.100 / 59. 40.100
   libavcodec     61. 20.100 / 61. 20.100
   libavformat    61.  9.100 / 61.  9.100
   libavdevice    61.  4.100 / 61.  4.100
   libavfilter    10.  6.100 / 10.  6.100
   libswscale      8.  4.100 /  8.  4.100
   libswresample   5.  4.100 /  5.  4.100
   libpostproc    58.  4.100 / 58.  4.100
 [AVHWDeviceContext @ 0x5fd8a3820f00] Supported layers:
 [AVHWDeviceContext @ 0x5fd8a3820f00]    VK_LAYER_NV_optimus
 [AVHWDeviceContext @ 0x5fd8a3820f00]    VK_LAYER_MESA_device_select
 [AVHWDeviceContext @ 0x5fd8a3820f00]    VK_LAYER_MESA_overlay
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using instance extension
 VK_KHR_portability_enumeration
 [AVHWDeviceContext @ 0x5fd8a3820f00] GPU listing:
 [AVHWDeviceContext @ 0x5fd8a3820f00]     0: NVIDIA GeForce RTX 4060 Laptop
 GPU (discrete) (0x28a0)
 [AVHWDeviceContext @ 0x5fd8a3820f00] Device 0 selected: NVIDIA GeForce RTX
 4060 Laptop GPU (discrete) (0x28a0)
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using device extension
 VK_KHR_push_descriptor
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using device extension
 VK_EXT_descriptor_buffer
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using device extension
 VK_EXT_physical_device_drm
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using device extension
 VK_EXT_shader_atomic_float
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using device extension
 VK_KHR_cooperative_matrix
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using device extension
 VK_NV_optical_flow
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using device extension
 VK_EXT_shader_object
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using device extension
 VK_KHR_video_maintenance1
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using device extension
 VK_KHR_external_memory_fd
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using device extension
 VK_EXT_external_memory_dma_buf
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using device extension
 VK_EXT_image_drm_format_modifier
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using device extension
 VK_KHR_external_semaphore_fd
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using device extension
 VK_EXT_external_memory_host
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using device extension
 VK_KHR_video_queue
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using device extension
 VK_KHR_video_encode_queue
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using device extension
 VK_KHR_video_decode_queue
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using device extension
 VK_KHR_video_encode_h264
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using device extension
 VK_KHR_video_decode_h264
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using device extension
 VK_KHR_video_encode_h265
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using device extension
 VK_KHR_video_decode_h265
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using device extension
 VK_KHR_video_decode_av1
 [AVHWDeviceContext @ 0x5fd8a3820f00] Queue families:
 [AVHWDeviceContext @ 0x5fd8a3820f00]     0: graphics compute transfer
 sparse (queues: 16)
 [AVHWDeviceContext @ 0x5fd8a3820f00]     1: transfer sparse (queues: 2)
 [AVHWDeviceContext @ 0x5fd8a3820f00]     2: compute transfer sparse
 (queues: 8)
 [AVHWDeviceContext @ 0x5fd8a3820f00]     3: transfer decode sparse
 (queues: 1)
 [AVHWDeviceContext @ 0x5fd8a3820f00]     4: transfer encode sparse
 (queues: 1)
 [AVHWDeviceContext @ 0x5fd8a3820f00]     5: transfer sparse optical_flow
 (queues: 1)
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using device: NVIDIA GeForce RTX 4060
 Laptop GPU
 [AVHWDeviceContext @ 0x5fd8a3820f00] Alignments:
 [AVHWDeviceContext @ 0x5fd8a3820f00]
 optimalBufferCopyRowPitchAlignment: 1
 [AVHWDeviceContext @ 0x5fd8a3820f00]     minMemoryMapAlignment:
 64
 [AVHWDeviceContext @ 0x5fd8a3820f00]     nonCoherentAtomSize:
 64
 [AVHWDeviceContext @ 0x5fd8a3820f00]     minImportedHostPointerAlignment:
 4096
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using queue family 0 (queues: 16) for
 graphics
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using queue family 2 (queues: 8) for
 compute
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using queue family 1 (queues: 2) for
 transfers
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using queue family 3 (queues: 1) for
 decode
 [AVHWDeviceContext @ 0x5fd8a3820f00] Using queue family 4 (queues: 1) for
 encode
 }}}

 **And with Vulkan hwaccel enabled:**

 {{{
 ffmpeg \
 -init_hw_device vulkan=vk:0 \
 -hwaccel vulkan -hwaccel_output_format vulkan \
 -hwaccel_device vk -filter_hw_device vk \
 -loglevel info \
 -fflags +genpts \
 -i '4KIOS.mov' \
 -vf "libplacebo=w=1920:h=1080" \
 -b:v 2250k -minrate:v 2250k -maxrate:v 2250k -bufsize:v 2250k -c:v
 hevc_vulkan \
 -r:v 60 -g:v 120 -tune:v hq -usage:v transcode \
 -async_depth:v 4 -b_depth:v 1 -bf:v 0 \
 -c:a libfdk_aac -b:a 128k -ar 48000 -ac 2 \
 -map "0:v" -map "0:a" \
 -max_delay 5000000 -max_muxing_queue_size 8192 -max_interleave_delta 0 \
 -flags -global_header+cgop \
 -y -f mpegts "ticket3.ts"
 }}}

 ****Output:****

 {{{
 ffmpeg version N-117283-gffe419d3a3 Copyright (c) 2000-2024 the FFmpeg
 developers
   built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
   configuration: --libdir=/usr/local/lib --enable-shared --disable-debug
 --disable-doc --disable-htmlpages --disable-manpages --disable-podpages
 --disable-txtpages --disable-ffplay --enable-alsa --enable-cuvid --enable-
 libplacebo --enable-librav1e --enable-libdav1d --enable-libshaderc
 --enable-libv4l2 --enable-libvmaf --enable-libvpl --enable-libxml2
 --enable-nvdec --enable-nvenc --enable-cuda-llvm --nvcc=clang --nvccflags
 ='--cuda-gpu-arch=sm_60 -O2' --enable-opencl --enable-vaapi --enable-vdpau
 --enable-version3 --enable-vulkan --enable-libopencore-amrnb --enable-
 libopencore-amrwb --enable-gpl --enable-libass --enable-fontconfig
 --enable-libfreetype --enable-libvidstab --enable-libharfbuzz --enable-
 libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis
 --enable-libvpx --enable-libwebp --enable-libx265 --enable-libsvtav1
 --enable-libx264 --enable-nonfree --enable-openssl --enable-lzma --enable-
 zlib --enable-gmp --enable-libfdk_aac --enable-postproc --enable-libzmq
 --enable-lv2 --enable-ladspa --enable-libxeve --enable-libxevd --enable-
 liblcevc-dec --enable-libzvbi --enable-decklink --enable-libklvanc
 --enable-libopenjpeg --enable-libjxl --enable-libzimg --enable-
 pocketsphinx --enable-libmysofa --enable-libquirc --enable-libqrencode
 --enable-libkvazaar --enable-libaom --enable-libsrt --enable-librist
 --extra-libs='-lpthread -lm -lz -ldl' --extra-cflags=-I/tmp/workdir
 /Blackmagic-SDK-14/Linux/include/
   libavutil      59. 40.100 / 59. 40.100
   libavcodec     61. 20.100 / 61. 20.100
   libavformat    61.  9.100 / 61.  9.100
   libavdevice    61.  4.100 / 61.  4.100
   libavfilter    10.  6.100 / 10.  6.100
   libswscale      8.  4.100 /  8.  4.100
   libswresample   5.  4.100 /  5.  4.100
   libpostproc    58.  4.100 / 58.  4.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '4KIOS.mov':
   Metadata:
     major_brand     : qt
     minor_version   : 0
     compatible_brands: qt
     creation_time   : 2016-01-30T17:46:24.000000Z
     com.apple.quicktime.location.ISO6709: +33.9173-084.0055+294.114/
     com.apple.quicktime.make: Apple
     com.apple.quicktime.model: iPhone 6s
     com.apple.quicktime.software: 9.2.1
     com.apple.quicktime.creationdate: 2016-01-30T12:46:24-0500
   Duration: 00:00:18.55, start: 0.000000, bitrate: 51218 kb/s
   Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661),
 yuv420p(tv, bt709, progressive), 3840x2160, 51119 kb/s, 29.98 fps, 29.97
 tbr, 600 tbn (default)
     Metadata:
       creation_time   : 2016-01-30T17:46:24.000000Z
       handler_name    : Core Media Video
       vendor_id       : [0][0][0][0]
       encoder         : H.264
   Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz,
 mono, fltp, 86 kb/s (default)
     Metadata:
       creation_time   : 2016-01-30T17:46:24.000000Z
       handler_name    : Core Media Audio
       vendor_id       : [0][0][0][0]
   Stream #0:2[0x3](und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
     Metadata:
       creation_time   : 2016-01-30T17:46:24.000000Z
       handler_name    : Core Media Metadata
   Stream #0:3[0x4](und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
     Metadata:
       creation_time   : 2016-01-30T17:46:24.000000Z
       handler_name    : Core Media Metadata
 Stream mapping:
   Stream #0:0 -> #0:0 (h264 (native) -> hevc (hevc_vulkan))
   Stream #0:1 -> #0:1 (aac (native) -> aac (libfdk_aac))
 Press [q] to stop, [?] for help
 Output #0, mpegts, to 'ticket3.ts':
   Metadata:
     major_brand     : qt
     minor_version   : 0
     compatible_brands: qt
     com.apple.quicktime.creationdate: 2016-01-30T12:46:24-0500
     com.apple.quicktime.location.ISO6709: +33.9173-084.0055+294.114/
     com.apple.quicktime.make: Apple
     com.apple.quicktime.model: iPhone 6s
     com.apple.quicktime.software: 9.2.1
     encoder         : Lavf61.9.100
   Stream #0:0(und): Video: hevc (Main), vulkan(tv, bt709, progressive),
 1920x1080, q=2-31, 2250 kb/s, 60 fps, 90k tbn (default)
     Metadata:
       encoder         : Lavc61.20.100 hevc_vulkan
       creation_time   : 2016-01-30T17:46:24.000000Z
       handler_name    : Core Media Video
       vendor_id       : [0][0][0][0]
   Stream #0:1(und): Audio: aac, 48000 Hz, stereo, s16, 128 kb/s (default)
     Metadata:
       encoder         : Lavc61.20.100 libfdk_aac
       creation_time   : 2016-01-30T17:46:24.000000Z
       handler_name    : Core Media Audio
       vendor_id       : [0][0][0][0]
 [hevc_vulkan @ 0x61c807f06040] Unable to finish command buffer:
 VK_ERROR_INITIALIZATION_FAILED
 [hevc_vulkan @ 0x61c804be8c40] Encode failed: -542398533.
 [vost#0:0/hevc_vulkan @ 0x61c807d90340] [enc:hevc_vulkan @ 0x61c807db2540]
 Error submitting video frame to the encoder
 [vost#0:0/hevc_vulkan @ 0x61c807d90340] [enc:hevc_vulkan @ 0x61c807db2540]
 Error encoding a frame: Generic error in an external library
 [vost#0:0/hevc_vulkan @ 0x61c807d90340] Task finished with error code:
 -542398533 (Generic error in an external library)
 [vost#0:0/hevc_vulkan @ 0x61c807d90340] Terminating thread with return
 code -542398533 (Generic error in an external library)
 [out#0/mpegts @ 0x61c807db48c0] video:0KiB audio:291KiB subtitle:0KiB
 other streams:0KiB global headers:0KiB muxing overhead: 21.645238%
 frame=    0 fps=0.0 q=0.0 Lsize=     354KiB time=N/A bitrate=N/A dup=4
 drop=0 speed=N/A
 }}}

 The ffmpeg process hangs indefinitely.

 **ii. With Vulkan H/W Accelerated decode disabled:**

 {{{
 ffmpeg \
 -init_hw_device vulkan=vk:0 \
 -filter_hw_device vk \
 -loglevel info \
 -fflags +genpts \
 -i '4KIOS.mov' \
 -vf "hwupload,libplacebo=w=1920:h=1080:format=nv12" \
 -b:v 2250k -minrate:v 2250k -maxrate:v 2250k -bufsize:v 2250k -c:v
 hevc_vulkan \
 -r:v 60 -g:v 120 -tune:v hq -usage:v transcode \
 -async_depth:v 4 -b_depth:v 1 -bf:v 0 \
 -c:a libfdk_aac -b:a 128k -ar 48000 -ac 2 \
 -map "0:v" -map "0:a" \
 -noautoscale -max_delay 5000000 -max_muxing_queue_size 8192
 -max_interleave_delta 0 \
 -flags -global_header+cgop \
 -y -f mpegts "ticket4.ts"
 }}}


 **Output:**

 {{{
 ffmpeg version N-117283-gffe419d3a3 Copyright (c) 2000-2024 the FFmpeg
 developers
   built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
   configuration: --libdir=/usr/local/lib --enable-shared --disable-debug
 --disable-doc --disable-htmlpages --disable-manpages --disable-podpages
 --disable-txtpages --disable-ffplay --enable-alsa --enable-cuvid --enable-
 libplacebo --enable-librav1e --enable-libdav1d --enable-libshaderc
 --enable-libv4l2 --enable-libvmaf --enable-libvpl --enable-libxml2
 --enable-nvdec --enable-nvenc --enable-cuda-llvm --nvcc=clang --nvccflags
 ='--cuda-gpu-arch=sm_60 -O2' --enable-opencl --enable-vaapi --enable-vdpau
 --enable-version3 --enable-vulkan --enable-libopencore-amrnb --enable-
 libopencore-amrwb --enable-gpl --enable-libass --enable-fontconfig
 --enable-libfreetype --enable-libvidstab --enable-libharfbuzz --enable-
 libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis
 --enable-libvpx --enable-libwebp --enable-libx265 --enable-libsvtav1
 --enable-libx264 --enable-nonfree --enable-openssl --enable-lzma --enable-
 zlib --enable-gmp --enable-libfdk_aac --enable-postproc --enable-libzmq
 --enable-lv2 --enable-ladspa --enable-libxeve --enable-libxevd --enable-
 liblcevc-dec --enable-libzvbi --enable-decklink --enable-libklvanc
 --enable-libopenjpeg --enable-libjxl --enable-libzimg --enable-
 pocketsphinx --enable-libmysofa --enable-libquirc --enable-libqrencode
 --enable-libkvazaar --enable-libaom --enable-libsrt --enable-librist
 --extra-libs='-lpthread -lm -lz -ldl' --extra-cflags=-I/tmp/workdir
 /Blackmagic-SDK-14/Linux/include/
   libavutil      59. 40.100 / 59. 40.100
   libavcodec     61. 20.100 / 61. 20.100
   libavformat    61.  9.100 / 61.  9.100
   libavdevice    61.  4.100 / 61.  4.100
   libavfilter    10.  6.100 / 10.  6.100
   libswscale      8.  4.100 /  8.  4.100
   libswresample   5.  4.100 /  5.  4.100
   libpostproc    58.  4.100 / 58.  4.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '4KIOS.mov':
   Metadata:
     major_brand     : qt
     minor_version   : 0
     compatible_brands: qt
     creation_time   : 2016-01-30T17:46:24.000000Z
     com.apple.quicktime.location.ISO6709: +33.9173-084.0055+294.114/
     com.apple.quicktime.make: Apple
     com.apple.quicktime.model: iPhone 6s
     com.apple.quicktime.software: 9.2.1
     com.apple.quicktime.creationdate: 2016-01-30T12:46:24-0500
   Duration: 00:00:18.55, start: 0.000000, bitrate: 51218 kb/s
   Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661),
 yuv420p(tv, bt709, progressive), 3840x2160, 51119 kb/s, 29.98 fps, 29.97
 tbr, 600 tbn (default)
     Metadata:
       creation_time   : 2016-01-30T17:46:24.000000Z
       handler_name    : Core Media Video
       vendor_id       : [0][0][0][0]
       encoder         : H.264
   Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz,
 mono, fltp, 86 kb/s (default)
     Metadata:
       creation_time   : 2016-01-30T17:46:24.000000Z
       handler_name    : Core Media Audio
       vendor_id       : [0][0][0][0]
   Stream #0:2[0x3](und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
     Metadata:
       creation_time   : 2016-01-30T17:46:24.000000Z
       handler_name    : Core Media Metadata
   Stream #0:3[0x4](und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
     Metadata:
       creation_time   : 2016-01-30T17:46:24.000000Z
       handler_name    : Core Media Metadata
 Stream mapping:
   Stream #0:0 -> #0:0 (h264 (native) -> hevc (hevc_vulkan))
   Stream #0:1 -> #0:1 (aac (native) -> aac (libfdk_aac))
 Press [q] to stop, [?] for help
 Output #0, mpegts, to 'ticket4.ts':
   Metadata:
     major_brand     : qt
     minor_version   : 0
     compatible_brands: qt
     com.apple.quicktime.creationdate: 2016-01-30T12:46:24-0500
     com.apple.quicktime.location.ISO6709: +33.9173-084.0055+294.114/
     com.apple.quicktime.make: Apple
     com.apple.quicktime.model: iPhone 6s
     com.apple.quicktime.software: 9.2.1
     encoder         : Lavf61.9.100
   Stream #0:0(und): Video: hevc (Main), vulkan(tv, bt709, progressive),
 1920x1080, q=2-31, 2250 kb/s, 60 fps, 90k tbn (default)
     Metadata:
       encoder         : Lavc61.20.100 hevc_vulkan
       creation_time   : 2016-01-30T17:46:24.000000Z
       handler_name    : Core Media Video
       vendor_id       : [0][0][0][0]
   Stream #0:1(und): Audio: aac, 48000 Hz, stereo, s16, 128 kb/s (default)
     Metadata:
       encoder         : Lavc61.20.100 libfdk_aac
       creation_time   : 2016-01-30T17:46:24.000000Z
       handler_name    : Core Media Audio
       vendor_id       : [0][0][0][0]
 [hevc_vulkan @ 0x5cdf853901c0] Encode failed: -939502976.
 [vost#0:0/hevc_vulkan @ 0x5cdf821dd440] [enc:hevc_vulkan @ 0x5cdf821e1100]
 Error submitting video frame to the encoder
 [vost#0:0/hevc_vulkan @ 0x5cdf821dd440] [enc:hevc_vulkan @ 0x5cdf821e1100]
 Error encoding a frame: Error number -939502976 occurred
 [vost#0:0/hevc_vulkan @ 0x5cdf821dd440] Task finished with error code:
 -939502976 (Error number -939502976 occurred)
 [vost#0:0/hevc_vulkan @ 0x5cdf821dd440] Terminating thread with return
 code -939502976 (Error number -939502976 occurred)
 [out#0/mpegts @ 0x5cdf8539c500] video:0KiB audio:196KiB subtitle:0KiB
 other streams:0KiB global headers:0KiB muxing overhead: 21.917399%
 frame=    0 fps=0.0 q=0.0 Lsize=     239KiB time=N/A bitrate=N/A dup=2
 drop=0 speed=N/A
 Conversion failed!
 }}}

 Attempting to strip out HDR and a53cc with {{{-units:v -hdr-a53_cc}}} also
 results in the same failure states above.

 H.264 encoding pipelines from the media samples I've tested with also
 fail/die the same way, with the exception of lavfi sources like this:

 (a). HEVC:

 {{{
 ffmpeg -v verbose -init_hw_device vulkan=vk:0 \
 -filter_hw_device vk \
 -f lavfi -i testsrc=duration=3600:size=1920x1080:rate=60,format=nv12 -vf
 "hwupload" \
 -b:v 2250k -minrate:v 2250k -maxrate:v 2250k -bufsize:v 2250k -c:v
 hevc_vulkan \
 -profile:v main -r:v 60 -g:v 120 -tune:v hq -usage:v transcode -content:v
 rendered \
 -async_depth:v 4 -refs:v 8 -b_depth:v 1 -bf:v 0 -strict -1 \
 -f null /dev/null -y
 }}}

 That passes with NVIDIA and **FAILS** on Intel, and;

 (b). H.264/AVC:

 {{{
 ffmpeg -v verbose -init_hw_device vulkan=vk:0 \
 -filter_hw_device vk \
 -f lavfi -i testsrc=duration=3600:size=1920x1080:rate=60,format=nv12 -vf
 "hwupload" \
 -b:v 2250k -minrate:v 2250k -maxrate:v 2250k -bufsize:v 2250k -c:v
 h264_vulkan \
 -profile:v high -r:v 60 -g:v 120 -tune:v hq -usage:v transcode -content:v
 rendered \
 -async_depth:v 4 -refs:v 8 -b_depth:v 1 -bf:v 0 -strict -1 \
 -f null /dev/null -y
 }}}

 Which passes on **BOTH** NVIDIA and Intel.
 The flag {{{-strict 1}}} has no impact on the results.
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/11219>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list