Use plain pipe if the TCP compat fails in Linux. This fixes a problem
when there is unavailable loopback connection (eg. running in a separate
network namespace with unassigned loopback address).
C++17 causes problems in Ubuntu 16.04 because increased C++ ABI version
(rather problem with GitHub runner compilers that were downloaded from
outside official repos - official clang-8 looked to work well).
Do not rename main thread since it renames a process as well and then it
doesn't respond to eg. killall as expected.
+ name the display thread (run if display worker doesn't require to be
run in main thread)
Do not run the display worker in the main thread if not needed.
This would allow to run a custom mainloop (eg. from Syphon) while being able
to run a display that doesn't need to be run in the main thread.
Some modules on some hardware need considerable time to finish
(SVT HEVC ~8s, AV1 >30s) so do not force quit after fixed amount
of time. Instead display only a warning and let use kill UG manually
if needed. Since previous commit, SIGINT causes usual termination.
Centralized FPS statistics output instead of in individual vidcap
modules in order to avoid multiplicities in code.
+ removed the FPS statistics code from testcard
Do not call non-async-signal-safe functions in signal handler. Instead
create dedicated thread for handling the callbacks that will the signal
handler only notify.
This should be more correct way than using the global should_exit
variable. Moreover, the observers like capturers doesn't need to
pool the should exit variable and can send signal themselves (that
may eg. trigger a CV).
Use adaptive capped bitrate if a limit bitrate value is specified.
Previously packets were emitted exactly at the specified bitrate which
is now an optional. Now, by default, the shapper shapes equally to
a frame time or capped bitrate (if the packet rate would be lower).