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.
After PR #3074, the following strings are no longer used:
* GameCapture.ForceScaling="Force Scaling"
* GameCapture.ScaleRes="Scale Resolution"
Commits from PR #3074:
* 9497589b1603dcacf07e3b81d2f60291eafb3590
* 63933997586bf88c862159bf5cb20be56b713283
This commit adds support to using Xiph and Mozilla RNNoise library for
noise reduction.
RNNoise is a small library using an AI approach to noise reduction
using a pre-trained model like RTX Voice. But unlike RTX Voice, it is
very tiny, use CPU instead of GPU and only use little resources.
Obviously it is not as efficient but will effectively remove background
noise. It uses more CPU than the existing libspeex-based noise
reduction but it also sounds sounds way better.
RNNoise support is added to the noise reduction effect. It can be
enabled with a checkbox in the effect configuration. RNNoise has no
settings.
This commit targets FreeBSD and potentially DragonFly BSD. The commit
fixes issue parsing /dev/sndstat when hw.snd.verbose is greater than 0.
Besides, the commit also adds support for audio devices created by
user space daemons, such as virtual_oss.