This reverts commit 3c22cf35c9802240c4775d98d360601ff2b67905, reversing
changes made to c7dab6c92ba7380b0d91f4a34b1f507a512d581b.
This is being reverted due to many people being unable to start up the
QSV encoder with these changes.
This reverts commit 33ff46a10e9c9844737990c567ffe497ef2cbd6f.
This is being reverted due to many people being unable to start up the
QSV encoder with these changes.
Users don't realize that dockable windows can be closed (hidden) and can
be shown again via the View menu. This adds an explicit warning when
the user first closes a dockable window for their first time. In future
versions, this should be changed to a dialog box with a "Do not show
again" checkbox.
Allows the ability to use invokeMethod on the OBSApp object to execute
an std::function. This allows deferring an std::function call to the Qt
event queue.
Performs a test on a texture to determine if NV12 textures are
functioning correctly. Older NVIDIA drivers appear to have a bug where
they will output their UV channel data on to the Y channel when copying
from the GPU. This test on startup determines whether that bug is
occurring, and if so, disables NV12 texture support.
Fixes mantis issue https://obsproject.com/mantis/view.php?id=1379
For some devices with hdmi input, the Front Center channel and the LFE
channel are swapped. For some others they are not.
To solve the issue a new swap setting is added so that the user can
swap the two channels if needed.
MatcherClosestFrameRateSelector updates best_match as a side effect of
visiting every VideoInfo instance, but CapsMatch uses std::any_of,
which will stop iterating prematurely on first match. This means that
the highest FPS is not selected.
This change switches to a for loop that doesn't exit early.
If a texture has to be rebuilt due to a driver reset and is a keyed
mutex shared texture, make sure to reacquire the shared handle and
acquire the lock.
Previously only sources would receive a load signal, but sources and
filters would receive a save signal. This meant that filters that had
a save signal to store something on disk would never receive a load
signal to load it from disk.
With this both sources and filters will now receive save and load
signals, allowing both to work the same way.