This isn't particularly needed, as a service with multiple tracks won't
be using multiple tracks to begin with anyway. This might change later,
but for now just mark it deprecated.
This adds two batch scripts to install and uninstall the virtual cam
devices for installations where the installer could not be used. Most
commonly, this is for portable installations or those who prefer the
.zip file.
Because the window capture source updates its data whenever certain
properties are modified, this would cause a race condition because
source updates normally happen in the graphics thread. To solve this
for the time being, put access to that data within a mutex when updating
or updating visibility.
Casting from char[] to uint32_t * is considered undefined behavior due
to different alignment requirements. Instead of using char[] for the new
value, this uses a macro to set a uint32_t directly.
Issue detected by PVS Studio.
If the video encoder allows video headers repetition at IDR frames,
and if the output is not rtmp (so srt, udp, etc with mpegts container),
this commit enables application of this setting from the custom service
(since srt is available through that service).
This commit adds a repeat_headers setting which will allow sps/pps
repetition and AUDs(access unit delimiters) .
Repetition is ensured by h264config->repeatSPSPPS &
h264config->disableSPSPPS;
the two parameters are set by nvenc to true on default.
When video headers repetition is required, we set the second in
jim-nvenc to false so that SPS/PPS are written into bitstream.
The first parameter could be omitted but is exposed since repetition of
video headers might not be required.
When headers repetition is enabled, we also enable AUD to facilitate
decoding.
Typically the video headers repetition will be useful for mpegts and
DVB broadcast decoders.
The repeat_headers parameter is currently hard-coded to false and can
not be changed.
For mpegts container and allow better compatibility with broadcast
mpegts decoders, it is mandatory to repeat the sps/pps headers
regularly.
This commit enables this parameter to be set either by the user or the
service (ex: udp or srt w/ mpegts container).
The b_annexb enables compatibility with Annex B bitstream which is
better for streaming formats than avcc.
Don't assume @setDataFrame when using an info packet. I'm guessing
librtmp did this because the only time this packet type was normally
used was when you use onMetaData.