with -DAJANTV2_DISABLE_PLUGIN_LOAD=ON
Not sure how it relates, but the former one is not supported and not
disabling the later causes undefined references to mbedtls, eg.:
```
/usr/bin/ld: /usr/local/lib/libajantv2.so: undefined reference to `mbedtls_pk_load_file'
/usr/bin/ld: /usr/local/lib/libajantv2.so: undefined reference to `mbedtls_pem_init'
/usr/bin/ld: /usr/local/lib/libajantv2.so: undefined reference to `mbedtls_pem_read_buffer'
/usr/bin/ld: /usr/local/lib/libajantv2.so: undefined reference to `mbedtls_pem_free'
/usr/bin/ld: /usr/local/lib/libajantv2.so: undefined reference to `mbedtls_pk_parse_subpubkey'
```
On RTSP error, return from the header callback CURL_WRITEFUNC_ERROR
to signalize cURL library that we have a problem. The particular cURL
function will then fail accordingly and we don't need to handle with
an external variable.
As a conseqence, all errors are now handled as a failure, not only
when rtsp_error_occurred was checked.
If the control uses relative URLs, the stream URL should be last to used, the
order in RFC 2326 is:
1. The RTSP Content-Base field
2. The RTSP Content-Location field
3. The RTSP request URL
The original mean was a bit cumbersome so rewrite it entirely in a more clean way.
It is now capable of playing the video produced by this UG command:
```
uv -t testcard -x rtsp:port=8654 -c lavc:enc=libx264:safe -V -A mp3 -s testcard
```
Note that the audio is still not fully implemented so that only video will
be presented. Neither this was possible before this change (audio control
was used instead of video due to buggy parsing).
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