Added option "size" instead of separate "widht"/"height". Both
dimensions need to be entered, anyway, so it is not needed to type more
characters than necessary.
Width/height param is parsing is left for compatibility (for now).
Note that only copy mode is supported right now - meaning that decoded
frames are copied from the GPU to the system memory. For simpler codecs
like H.264 this could actually be slower than sw. decoding. VDPAU is
probably still a better choice for codecs supported by it.
Right now ffmpeg prioritizes vdpau, so this will get selected only when
vdpau is unavailable or fails to initialize.
If the compression cannot make it, print a hint that would perhaps
increase a latence and thus is not enabled by default.
As as consequence of that, set NVENC delay to 0 again to be consistent
with the other compressions (latency preferred).
The bug is induced by upstream FFmpeg changes, in particular:
28680e2f41
Supposedly "disabled" is the only supported b_ref_mode for Pascal cards
and it fails if not set (set otherwise). We don't use B-frames at all so
it can be disabled by default, anyways.
closes GH-273
If earlier codec is convertible, use this. In other words, prefer first
codecs, not those most easily convertible.
The point is, that the list passed to get_format lavd callback is
usually ordered from best codecs so we want to keep it.
It also fixes a "regression" from 4c5cf6f2 (given by the different
selection schemes in original and the replacement):
uv -t testcard:codec=R12L -c libavcodec:encoder=libsvt_hevc -d dummy \
--param force-lavd-decoder=libde265 -V
decoding YUYV, not v210 (from AVPixelFomat AV_PIX_FMT_YUV444P10LE)
Fixed incorrectly selected UYVY with following command:
uv -t testcard:codec=R12L -c libavcodec:encoder=hevc_nvenc --param force-lavd-decoder=hevc_cuvid -d dummy -V
There were 2 problems:
1. probed codec should be returned after first successful decoded frame
because in the above case, the decoder offers nv12 via get_frame
callback first and it changes later to yuv444p16le if decoding
continues and succeeds (see also 2.)
2. get_format_callback() returned VIDEO_CODDC_NONE on probe but that
caused subsequent initialization of 'hevc' decoder (because lavd
thought that it failed). Because of that, the probe couldn't have
proceeded.
After the changes, the probed format is R10k (correct for now -
get_best_ug_codec_to_av({AV_PIX_FMT_YUV444P16, 0}, 0) returns R10k).
It has replaced flags recently but it doesn't seem to have much
importance but it makes the modules implementing that more complex so
added a hint that only BLOCKING/NONBLOCK/DISCARD are important values.
Beware not to add --whitelist=/tmp[something] because that would hide
the actual mounted image (/tmp/.mount_ultragridsomething). As /tmp is
remounted RO, just make the "whitelisted" dirs RW.
+ add to whitelist $DIR (path to executable) if it is not /tmp (eg.
extracted AppImage somewhere)
The vulkan.pc pkgconfig file is for the vulkan loader library and
doesn't guarantee the presence of the vulkan headers. Indeed, some
distributions (e.g. Arch) package those in separate packages
(vulkan-icd-loader and vulkan-headers).
It would be perhaps more correct to check for vulkan.hpp, but that
header is so big that it would slow the configuration by ~10 seconds.
Hidden port, cuda-device and rate limiter in basic view. Those are not
more important than many of already hidden.
- cuda device - slightly changed description 's/CUDA device/GPU' - it
actually selects a card also for NVENC, in the end
Together with tiles setting, it should enable Motion Constrained Tile
Sets (MCTS) that should allow independed tile decoding. But it doesn't
seem to be currently the case with FFmpeg HEVC decodeer.
If checking AV1 properties, check if the codecs is really libsvtav1. It
can be also libsvt_vp9, where the option setting would fail (athough
innocent, it may be confusing).
Only enable for libvpx*.
Codecs must be individually evaluated - for libx265, it increases
latency because it uses frame threading parallelism internally.
For libsvt_hevc and libx264, the performance boost is not noticeable.