Disable CUDA-accelerated FFmpeg conversions with CUDA 8 and earlier. At
least in Linux, it requires gcc-5, which is now hardly compatible. (The
actual compatibility was not tested thoroughly because CUDA 8 is
unsupported.)
see also the commit 4581c7f4
Use static_assert to ensure little endian instead of the preprocessor
checks - if the those macros are not defined by the compiler, the check
will be eliminated. If other complier is used, write this more
generically.
Where the PACKAGE_BUGREPORT is the only used item from config.h,
use bug_msg(), which can be then removed.
Improved bug_msg() to allow printf-like fomat + arguments.
- print the direct RTP stream URLs only once (== do not repeat with
every printed address)
- print only if autorun was not specifiec
- take the IP version from the state
Since the rtpmap line is now generated also for static packet types,
the condition must have been updated to check the packet type rather
than the presence of rtpmap line.
Instead of deducing from audio parameters, defer the creation until we
receive some audio data.
This complements identical change for RTSP in the commit 41b038862
(2024-08-13).
MJPEG does produce wrong JPEGs[^1] if either slices or threads == 1 and
the other not (until now also the implicit case, because the values
are auto-adjusted).
So if either is 1, auto-set the other value to 1 as well. If both are
set and either is 1 and the other not, issue at least a warning.
[^1]: for the s=1 && t>1, FFmpeg own decoder is capable to decode,
but the bitstream is definitely wrong - instead of RST markers there
are EOI markers.
Fixed the Coverity complaint by keeping the behavior of "doing nothing" with
the frame while passing it unchanged. It may also return nothing, as it was
doing for the short time - this seems to be inferior in cases when the input
changes from supported to unsupported, this would cut-off the picture eniterely,
not just the logo.
1. do not call av_log_set_level if using custom callback - seemingly not
used for custom callbacks
2. simplify lavc-log-level (rename from lavcd-...) and keep it only for FFmpeg
values only (+ use FFmpeg default logger)
As indicated by the point 1, it didn't perhaps even work unless the
'D' suffix (now removed) was added to the param because the value set
was not used by the custom callback but default (UG global) log_msg was
used instead.
advantages:
- it saves some build time (approx. 25 sec)
- it is compatible with Windows CI where the binary build is used as well
- reduces complexity by delegating the build to GPUJPEG CI
The export module is now intended to be initialized always, although
not exporting at that moment, so assert the state presence for
export_audio/export_video.
As it is now common also for different CUDA stuff and GPUJPEG binary CI
builds themselves (but used only for Win), build also for CC 3.5 (Kepler
cards), which will be still supported for very short amount of time
(but as there will be builds, those can be used in future also on such
a cards, even if the support will be dropped from UG further).
In case that the input has 1 channel and 8 kHz, the packet type was not
set to 14, because the first if branch was entered instead of else-if
(not setting anything).
Fixed the condition that applied only if fixed PT was used for the
audio. But dynamic packet type is used when more channels are used,
in which case the condition didn't hold, which caused the stream not
being handled appropriately (interleaving the channels).
replace "H264 standard" with "RTP standard (using RTSP)" - the "standard"
protocol (on the sender) is no longer restricted to H264 - JPEG is also
possible as well as couple of audio codecs.
Do not deduce audio properties from command-line parameters but from
the actual format that is being to sent.
Until now, the properties like ch_count and sample rate was deduced from
command-line parameters (ch_count from `-a channels=` and sample rate from
`-A xxx:sample_rate`). However, this is a bit fragile - the source may not
respect the `-a` parameters and also the `-A sample_rate` doesn't need
to be set, like in the following case:
```
uv -x rtsp -A A-law -a sample_r=8000 -s testcard
```
Here the capture sample_rate is set to 8000 but not parsed from parameters
(it must have been in `-A`). So SDP parameeters for RTSP was set
incorrectly (48000).
The audio state is always present (even if no audio rx/tx is used),
so set this always.
This will allow setting the data also for tx (the vrxtx) - the check if
either audio tx or rx is unnecessary (as indicated above).
renamed to rtsp_type_audio and rtsp_type_video
Although not causing probles by now, the name itself (which is as a
part of unscoped struct global) is very common so it could have caused
conflicts in future.