Although CUDA_PATH is advertised by help, it is actually immediately overriden
with the content of CUDA_DIRECTORY env var even if unset/empty.
From now, only override it only when CUDA_DIRECTORY is set and not empty (compat).
Seem no longer to be needed, also GCC has been used that time.
The change may very slightly (if noticable) improve CI run time but it
is consstent with instructions in wiki and also more clear.
This reverts commit 8278e15201.
Prefer `-x rtsp:port=<P>` instead of `port:<P>`. The former one is a bit
inconsistend with other stuff and would also cause problems in future if
more options were added.
Keep the compat for the old syntax.
Fixed the usage, which was not correct anyways (the '=' should have been ':').
If SPS/PPS is not passed in RTSP, set from those NAL units in the stream.
This is also the case of RTSP/RTP stream produced by current UltraGrid
RXTX implementation.
Since we are computing needed data first in rtpdec_h264 (with pass==0),
we can allocate exactly needed buffer directly, without relying that
there is enough space.
Do not perform TEARDOWN if SETUP was not issued - this is mostly only
required to avoid false-positive error when probably another problem
occured before (otherwise the SETUP would have been called).
insteda to rtsp_state::rtsp_error_occurred, the error was printed to
some place of stack (the address of `s` variable on stack plus offset
of that attribute).
\+ added magic value to ensure
Mainly for readibility - return bool on error from various functions.
It seems like initially the return value of 0 meant failure (not success,
which is a bit misleading (I personally perhaps used -1 to signalize error,
which would supposedly be considered as a success).
The parsing was quite bogus, especially if there was no user:pass but
a port specification in URI (with ':').
The stuff doesn't seem to be essential, anyways, since userinfo is also
passed to the server as part of the URI.
The printout includes pointer, which was at the time of writting supposed
to be 32, in which case the line length was:
2 /* 0x */ + 8 /* ptr */ + 1 /* : */ + 3 * 16 /* " XX" */ + 16 /* char repr */ + 5 /* additiona separators */ + 1 /* NL */ = 81
(separators - 2 betweeh group of hexa and char repre, 3 between hexa and char represenatation)
With 64 bit pinters, it can be at most 89 bytes. To keep the old length,
removed one space between every pair of hexadecimal byte representation -
it is still good legible, compatibile with xxd, still keeping the 80
long line..
Doesn't seem to be required and nwo (since the new PPA use) causes following error:
```
ultragrid_vidcap_rtsp.so: /lib/x86_64-linux-gnu/libgnutls.so.30: undefined symbol: nettle_siv_gcm_aes256_decrypt_message, version NETTLE_8
``
(obviously) when libgnutls30 is not installed, eg. in Ubuntu 24.04.
The libva in the savoury1 is very new (2.22), which is even newer than
in U24.04. This would prevent LD_PRELOAD of libva from the system.
This reverts commit 234821d31c.
Check if bundled libavcodec has all dependencies satisfied from system
libva, if not do not use the system ones.
Fixes the error message:
```
undefined symbol: vaMapBuffer2 (./squashfs-root/usr/lib/libavutil.so.59)
```
on (some) current Ubuntu 22.04 with current continuous AI.
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).