Defers the update of the slideshow source until the user has pressed OK
or exited the properties dialog. This ensures images aren't reloaded
every time the user adjusts a setting.
This reverts commit 6629c5d7b8f93da7f7c65f790d54f22949b79ac2.
Chat redirect only happens on raid, which is when you are ending your
stream. That's acceptable behavior for the main chat window.
This actually isn't necessary because the graphics subsystem technically
automatically frees effects, but that could change, so call this just to
be safe.
In order to make for a better user experience with service integration,
do a one-time reset of the docks locked state, and set the default lock
state to off.
Fixes an issue where if you auth to twitch, then close the program
without unhiding the twitch stream stats panel, the next time that panel
was unhidden it would be at position 0,0 on your screen. This
explicitly sets its position to be center of the window beforehand to
ensure that won't occur.
Because the new NVENC implementation requires texture sharing, if the
user chooses to use a secondary GPU, fall back to the old implementation
instead.
Fixes the Profile Level problem with integrated AMD Vega GPUs.
(Jim: Also fixes an issue where the amf-test executable would not build)
Closesobsproject/obs-studio#1619
Adds a texture-based NVENC implementation which passes OBS NV12 output
textures directly to NVENC without downloading them off of the GPU,
increasing NVENC performance by a significant margin.
If NV12 textures are unavailable or the new encoder fails to initialize
for whatever reason, it will fall back to the FFmpeg NVENC
implementation safely.
Adds VBR rate control mode, adds a lookahead option, adds psycho visual
tuning option, removes level property (now always set to 'auto'),
removes "2pass" option (replaced by new "Max Quality" preset which uses
2pass by default), modifies a few defaults, and updates their locale
text.
The post-output rescale option in advanced output mode cannot currently
be used with texture-based encoders, so disable the option when a
texture-based encoder is selected.
Allows the ability to encode by passing NV12 textures. This uses a
separate thread for texture-based encoders with a small queue of
textures. An output texture with a keyed mutex shared texture is locked
between OBS and each encoder. A new encoder callback and capability
flag is used to encode with textures.
This splits the "do_encode" function in to "do_encode" and
"send_off_encoder_packet", the latter of which allows the ability for
texture-based encoders to manage their own encoding and just simply send
off a packet to the outputs.
Normally, the total and skipped frame count for the encoder is performed
in the video-io thread. However, because a new thread is being
introduced for texture-based encoding, the frontend has no way of being
able to query that. So, instead of making the frontend query that data
separately, just make the texture encoder thread increment the values of
video-io. That way, the frontend doesn't need to change any code, and
can continue using the same functions for determining the total/skipped
frame count.
This can cause the frame count to be doubled if both a texture-based
encoder and a raw data encoder is active at the same time, but it's an
acceptable alternative.