Duplicate first packet to increase resilliancy in cases when the traffic
is low, usually a single packet of some inter-frame compression like
H.264/HEVC. But it will similarly do the job when more packets per frame
are used.
First packet is duplicated instead of the last one because the last packet
can have less symbols than the first if there is more than 1
packet, eg. `DDDD|DF` (D - primary data; F - FEC, | - packet bounadry).
refers to GH-361
U20.04 doesn't have libopenh264 yet, so use it from the
ppa:savoury1/ffmpeg4, which replaces ppa:savoury1/vlc3 - it contains
the same x265 version (3.6).
The new repo ppa:savoury1/ffmpeg4 contains more (updated) packages
than /vlc3, which can be actually the advantage (eg. no need to build
own Vulkan loader/headers).
Fix the commit ab794ce70 (2023-11-23) that fixed (incorrectly) the
CID 424197.
If should_exit was set before waiting in pthread_cond_timedwait, the
infinite loop is never left. Moreover, it seems that the loop was left
only on should_exit timeout, not when notified by condition variable.
This is mostly to make Coverity happy - the spurious wakeup here does
not matter in any way. So reverting the original "fix" would be enough.
If both encoder and decoder of the same name is present, eg. jpeg2000,
print help for both encoder and decoder. Since for the decoder, options
are also printed with enc=<enc>:help, print both enc and dec at the
same time.
In case that set_param callback modifies some field use a copy to be
reentrant for next attempted pixfmt (or reconfiguration).
The other alternative would be to set the pointer to setparam struct
const, but some setters currenty really modify the params.
User may be tempted to set the bitrate although CRF is now default,
so unset pred-struct (because it won't work with current
ffmpeg/libxsvtav1).
But issue a (serious) warning in this case.
This reverts commit fa8bb8ca8e.
Actually this worsened the behavior significantly by increasing the
latency in the order of 100 frames (depending on properties). This
(currently) disallows setting the bitrate, using CRF/CQP is only possible
because the FFmpeg plugin isn't able to set CBR for now.
set_forced_idr function was unnecessary - the error handling can now
do chec_av_opt_set(). Moreover it prints out the setting to std output
even when succeeded.
If run from within the AppImage, -h shows help of the AppImage wrapper
itself, not the one of UltraGrid. So add --ug-help as an alternative for
`-o uv -h`.
First considered was a shortopt -H, but this is currently mapped by UG
for --full-help (which can be used directly), so keep the long variant
in order not to make it confusing.