Allows the ability to (optionally) synchronously create/update a
directshow device source rather than always asynchronously update the
device. This is useful if creating/destroying scenes/sources very
quickly, and helps minimize the risk of creating new directshow sources
that use the same device, yet may not activate because an existing
source may already exist. To use, set "synchronous_activate" to true in
its settings when updating or creating. Note that this setting will be
erased after it's used, and will not be saved to user settings, so it
must be set each time in order to be used.
Closesobsproject/obs-studio#1228
Uses WaitConnection() when calling obs_frontend_set_current_scene to
ensure that the calling thread and the UI thread are synchronized when
setting the current scene via this function.
Closesobsproject/obs-studio#1234
Allows the ability to add a new scene collection via the frontend API.
Blocks until the scene collection has been successfully added to ensure
synchronization between the calling thread and the UI thread.
(Jim: Added detailed description to commit message)
Closesobsproject/obs-studio#1232
Instead of queuing AddScene to add the new scene to the list box,
ensures that the UI has added the new scene to the list box when the new
scene is added. This ensures synchronization between the calling thread
and the UI thread in this particular case.
(Jim: Added detailed commit message description)
Closesobsproject/obs-studio#1226
A helper function used with QMetaObject::invokeMethod which allows the
ability to use Qt::DirectConnection if on the Qt UI thread, or
Qt::BlockingQueuedConnection if on another thread to ensure that
regardless of what thread the invokeMethod is called from, that it will
wait until the invoked method has been called.
Instead of manually having to call AddScene each time a scene needs to
be added, use the "source_create" global OBS signal to detect when a
scene has been created, and add the scene to the list automatically.
Allows the ability to add scenes to the main user interface via libobs
API.
Closesobsproject/obs-studio#1226
Due to the ability to track creation of scenes via the "source_created"
global signal, the callback parameter of obs_load_sources has become
somewhat obsolete. This change allows the ability to pass NULL to the
callback parameter in case the callback is not needed.
Deferred load is used specifically for macOS systems to ensure that Qt
and CEF do not load at the same time. This causes a slight bit of a
delay in loading the scene after the UI has loaded. This is not
necessary for other operating systems, so revert to the older load code
in the case of different systems.
Add a new algorithm to calculate the true-peak. It implements the
Whittaker- Shannon interpolation from four samples to create 4
intermediate samples (5 x oversampling) inbetween the middle two
samples.
With 4 samples and 4 intermediate samples the algorithm can be
implemented as a 4x4 vector-matrix cross product, which is ideal for
SSE.
I've also replaced the sample-peak algorithm using SSE as well to
improve performance.
Closesobsproject/obs-studio#1189
Adds obs_add_raw_video_callback() and obs_remove_raw_video_callback()
functions which allow the ability to get raw video frames without
necessarily needing to create an output.
Reduces GPU usage when encoding is not active. Does not perform color
conversion, frame staging, or frame downloading unless encoding is
explicitly active.
Audio controls in OBS Mixer and Advanced Audio Properties window are not
sorted at all. Every time OBS is restarted they get shuffled (Jim note:
This is due to json object hashing). The order of these controls is
additionally not consistent between the mixer and the advanced audio
properties window.
Closesobsproject/obs-studio#1242
The filters array should not be accessed without locking the filter
mutex. This locks the filter mutex, grabs a reference to the first
filter, unlocks the mutex, renders the filter, and then releases the
reference.
Closesobsproject/obs-studio#1215