If the user changes one of the devices in audio settings, it would reset
all of its data, including settings, filters, flags, and all that. This
changes the handling so that the source and all of its other settings
are preserved if the user just changes the device. (Note that if the
user disables the device, settings will be lost; this only applies to
when the user changes the device to a different device for whatever
reason)
When the statistics window starts up for the first time, it reset values
at that very moment so that stray lagged frames due to OBS' startup
wouldn't be displayed. However, that's really a bad place to reset
those values because the user could want to view the stats window after
a long stream, and having those values reset when he/she views the
window for the first time would sort of make the point of viewing your
stats moot.
Instead, reset the values only when applicable, such as after OBSInit or
when video is reset.
I have always felt that the out of the box themes for OBS were quite
lacking, and have spent a lot of time going through and sorting out the
difficulties with the current setup. I've added a new themeID parameter to
several elements that were otherwise impossible to target with QSS in a
theme. Since Qt has pushed for the use of QML over QSS at this point,
these should be considered workarounds. Included is the theme I was
working on that can serve as a base. I'm hoping to encourage others to
make their own themes, so we can grow the available themes for OBS.
I am happy for any feedback on the theme itself, or other updates that
can me made to make creating new themes easier overall.
When using the full installer, there'll be a section where you can
choose what to install -- one section is a tree view with a "plugins"
section, and in that section there's "Browser plugin" and "Realsense
plugin". Instead of superfluously saying "plugin" for each of those,
replace with "source" instead -- so browser source and realsense source.
Also somewhat helps prevent the user from getting confused and thinking
we're installing a browser or something.
When custom server is used, it would still use the "common" RTMP service
to cap its bitrate. So if Twitch was selected and you changed over to
custom RTMP server, it would still cap to Twitch's bitrate limits even
though you're not using Twitch anymore.
Prevents the output from hard-locking on itself when the stop call would
trigger the callback and then try to lock again. Probably could be
solved with a recursive mutex, but at that point it's not really
necessary.
The radio buttons had been changed so "Streaming" would be selected by
default, but it only sets the wizard's "type" to streaming if the user
actually clicks the radio button themselves manually, so it would stay
set to "Invalid" by mistake, causing settings to not be applied.
Changes the default autoconfig test bitrate to 10000kb/s, which will
then be capped by the user's service selection (so it'll still only use
6000 on Twitch for example, but will allow 10000 on Youtube and others).
When running the program for the first time, no scene collections will
show up in the scene collection menu. This changes it to forcibly save
the first scene collection on the first run of the program, and then
re-enumerates the list to ensure it's listed.
This commit fixes creating log files in windows with Unicode profile
names.
I encountered this bug when running obs-studio 18.0.2 in Windows 8.1 x64
with my user profile path containing Unicode characters.
Steps to reproduce:
1) Create a windows user with a Unicode name: "пользователь"
2) Run OBS Studio, go to Help -> Log Files -> View current log (Nothing
happens)
The expected result is opening current log file.
Closesjp9000/obs-studio#916
There's a loophole that would allow users to activate an output while in
the settings window via hotkeys -- this prevents that from being able to
happen. Note that users can still shut down outputs, but they can no
longer start them up while in the settings window.
While an output is active, the user may try to reset the settings in the
settings window, causing a misleading error message to be thrown in the
log indicating that it's "falling back" to OpenGL.
Instead, if an output is currently active, do not reset video.
Fixes a bug where the individual drop-down lists of each quick
transition would not have the correct available transitions listed if
transitions were added, renamed, or removed
Uses a named mutex to detect if multiple instances of the program are
open, and if so warns the user. When running in portable mode, uses a
separate unique mutex name mapped to the user's config directory to
ensure that no two portable builds use the same config directory. This
way, portable builds do not conflict with normal builds or other
separate portable builds.
Instead, quit only when the main window has been fully closed (and not
minimized to tray). Fixes a bug where if the main window is minimized
to tray and another non-child window is open (for example, the stats
window), and then that window is closed, would cause the program to
prematurely exit and crash.
This is the only case where the button's name does not match the
locale's text, the button name being "Ok" and the locale text item being
"OK", fully capitalized.
Shows performance stats, and streaming/recording stats, and helps warn
the user when they have less-than-optimal values with coloring on the
values (e.g. yellow when getting low on disk space, red when getting
really low)
This fixes a case where the user sets an IP but then that IP is no longer
valid, resulting in OBS showing "Default" in the settings but still trying
to bind to the invalid IP internally.
The auto-configuration wizard is designed to allow first-time or
novice/uneducated users or to set up video and encoding settings in a
very quick and easy way. It'll automatically perform a bandwidth test,
and/or test the user's video settings to determine the most ideal
settings for streaming and recording (assuming a 1-pc setup).
Adds 1920x1080 and 1280x720 to the drop-down list of "default"
base/canvas resolutions rather than just the user's monitor resolutions,
in case the user wants to set the canvas to 1920x1080 or 1280x720
without having to manually type it in. Added as a minor convenience.
The reasoning behind this is because having a very large canvas size can
negatively affect the user experience -- most sources end up seeming
smaller than they need to be to users, resulting in the user needing to
size up the sources, or in the case of webcams it makes the user try to
use much larger webcam resolutions than they should reasonably need to
do, resulting in higher unintentional resource usage. The program will
additionally require more fillrate to render and downscale things as
well.
This applies only to the default starting base/canvas resolution for new
users only.
Additionally, users that ran the program pre-19 will be unaffected by
this change, as it will detect that and set the old defaults to prevent
an unexpected change in resolution for those users.
If defaults change for the base or output resolutions, it could
unintentionally affect users who are using defaults by chance and have
never changed those values.
Instead, save those values are soon as defaults are set if the users
haven't already set them.
Fix a double free in the settings window that occurs on linux only.
The UI Element already gets deleted above as a child of the
advAudioGroupBox which is not present on linux.
Apart from making the code even more unreadable, this will likely
come back to haunt us if the advAudioGroup will ever be shown on linux.
Fixes an issue where scene data would reset if the file was not found,
even if a backup file existed. This should prevent those remaining
stray cases where user's scenes would seem to be suddenly deleted if the
original file was deleted for some reason or another. The backup files
should always be available, so this should clear up that last remaining
case.
When building with VS2017 the compiler shows some warnings which is
undesirable.
The compiler rightly complains about declarations which hide older ones
which are trivially fixed.
Finally only POD types should be passed to variadic functions which is
why the String should be converted to c_str().
Relying on the current undefined behavior is a bad idea as it can change
with compilers and compiler versions.
Closesjp9000/obs-studio#902
With these new functions, plugin developers can enable, disable and
get the status of Studio Mode, as well as get and set the current
preview scene and transition the current preview to Program
Here is a list of the Studio Mode events:
- Studio Mode enabled
- Studio Mode disabled
- Previewed scene in Studio Mode changed
The audio subsystem of windows is by default configured to lower the
volume of other things while a communications device (mic) is currently
active. This patch prevents that from being enabled with OBS. If the
user needs audio ducking enabled again for whatever reason, there is now
an option to re-enable it in advanced settings.
Closesjp9000/obs-studio#884
Currently the captioning code is a bit intertwined with the UI, and the
captioning is hard-coded towards microsoft speech API.
This patch abstracts captions to allow other APIs to be implemented
later.
This adds close buttons to remux dialog, output timer dialog, and
advanced audio properties dialog. I also did a small refactor of the
remux dialog so the buttons were consistent with other dialogs.
Closesjp9000/obs-studio#876
After dragging and dropping a file, the source name will be the
filename.
(Jim: When dragging and dropping raw text, the raw text would then be
used as the source's name, which is bad if there's a lot of text. It's
now been changed so that it uses the source type's display name, i.e.
"Text (GDI+)" as the source name in that case)
Closesjp9000/obs-studio#888
This commit adds functions to get, set and save the service and its
settings, and is plugged straight into the existing internal functions
serving this purpose
(Jim: Fixed commit message and missing newline at end of file)
Closesjp9000/obs-studio#895
Added a shortcut to "Edit Transform", with Ctrl+E (lines 1191-1193).
Editing was very easy in OBS Classic, and I could not find the option
for stretching a source to bounds in OBS Studio, so the "Edit Transform"
dialogue should be more user-facing. Giving it a keyboard shortcut
denotes that it is important enough to have a shortcut, as opposed
to the myriad options with no shortcut
OpenGL on Windows is rather unstable and can result in graphical
corruption or the complete inability to start OBS since some GPUs do not
support the minimum requirements after switching to OpenGL. The UI option
is now hidden unless --allow-opengl is passed on the command line.
The D3D adapter is currently unused and we often find users are concerned
when their GPU does not appear in the list.
This would cause people to download the 64bit files when they were on
the 32bit version of windows, even though those files aren't meant to be
installed.
The GetTempPath and GetTempFileName functions weren't being used
correctly, GetTempFileName always create a temporary file, and was
creating a temporary file in the root directory of the hard drive
unintentionally.