For uninit, screen-capture-recorder-x86.dll calls CoInitialize(0) and
fails because it fails.
Curiously this doesn't occur for register, which should be equivalent.
Get the info from audio lavc in textual form instead with a new API to
querying additional info about codec for user.
The new API will allow adding additional useful information in help,
eg. encoders present.
this updates the commit a0dd6b9b85
This may be useful sometimes, eg. when comparing 2 versions where one
has some param and the other not. Or if the param presence is depending
on selected feature (eg. `--param debug-dump=`).
With current zfec code, fec_init() needs to be called prior to fec_new(),
otherwise the later one returns NULL.
\+ updated submodule to the current zfec version (requiring fec_init();
but UG will compile with the older zfec version as well)
Speex doesn't seem to offer any advantage over other codecs and is deprecated in
favor of Opus by Xiph.Org.
Added this feature in a generic fashion in order to allow eventual deprecation
of some other codecs that may not be useful but would complicate further
development.
Do not use source TS as (a base for) RTP TS by default anymore. Since this
was essential for synchronized DeckLink playback, require `--incompatible`
to enable this.
The reason to disable for now is because it breaks compressed
audio. Eg. for Opus, one receives 2 packets for 40 ms input. Currently
only the first gets source TS, second is undefined, thus getting the
default, loosely related TS, that may however create TS discontinuity
(especially with the time, when PC and DeckLink time diverges).
There is no good solution for the above yet, sending both packet with
the same TS and m-bit on second isn't sufficient now, because it gets
joined in receiver buffer and eg. Opus is not self delimiting so it will
need changes on receiver side to pass RTP packets to Opus decoder as
Opus packets.
refer to GH-326
The state_root::new_message is now handled in host.cpp, which processed
all messages, even those intended for reflector.
As a solution, the new_message callback of state_root processes only
messages for it and puts remaining messages back to the pool with the
new function module_store_message() that doesn't call the new_message
callback.
erase should_exit_callbacks before calling broadcast_should_exit
The destructor is called after most of the modules are destroyed but the
should_exit callbacks are not unregistered (it is not supposed to be
required since it should be called only to unblock blocking modules
calls to allow destroying them).
The management of should_exit events should be also be shared with the
transcoding reflector that uses some parts that may depend upon this
functionality.
This is not purely a refactorization but slightly changes behavior,
namely the shared state cleanup is done in a destructor, not by
`uv.stop()` as it used to be.
see GH-307
- removed `needs_mainloop` attribute and deduce if mainloop is needed
from the presence of _run callback (the information is now redundant
only displays needing/running mainloop should announce _run callback)
- run the custom mainloop (currently only Syphon!) only when display
doesn't run its mainloop. This allows running Syphon and GL/SDL
display because it connects to the display mainloop.
If user didn't set anything on command line, do not override the default
value of `log_level` specified by the initializer.
This is a bit contraintuitive if a developer sets the value ad hoc to a
different val, it won't take effect.
lrand48() is now called in rtp_init_if() prior to init_rng() to get
random port offset. But when not seeded, first call of lrand48() return
always 0 (with glibc 2.37).
The original name was now slightly misleading since there is also bob
and linear deinterlators.
Also for user it is "double_framerate", not corresponding with the
original file name (underscore instead of minus sign).
+ moved to C