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).
- added (const char *) attribute to param_u union to avoid casting away
const warnings
- added also (const void *) and (volatile void *) for the rest
- there was a typo in computing requested_mtu causing violating sequence
point evaluation order
- alsa_get_pcm_state_name: added attribute unused
- audio/utils.cpp: different signdness
- audio/utils.cpp: different signdness
- split capture filter: useless dispose_frame
- video_compress: not copying whole string (with strncpy)
This is particularly important with RFC-compliant SDP streams because
audio metadata is written in SDP file but when no audio is actually
sent, the receiving application may be confused by attemnting to
synchronize audio and video.
* Since RTSP is no longer working with current LIVE555, RFC-conforming
H.264/A-law/u-law/OPUS streams can be accessed with SDP.
* experimental only (would need more effort to be robust, well written
etc.)
* removed ifdefs from transmit relating to standard AV RTP payload
formating
* main: added --protocol option (shortcut for --audio-protocol and
--video-protocol)
* main: disable intra refresh in default setting for H.264 in RTSP/SDP
This will cause that unless user requests explicitly IPv4, IPv6 socket
accepting also IPv4 traffic will be opened. This fixes potential issues
when host specifies IPv4 address (or hostname resolvable to IPv4), thus
opens IPv4 socket. But the other peer uses IPv6 address of the host
which causes that the host doesn't receive anything.