Commit Graph

351 Commits

Author SHA1 Message Date
Ryan Foster
a1fbf1015f clang-format: Increase column limit from 80 to 120 2024-10-04 18:19:27 -04:00
Warchamp7
cb026964b0 UI: Replace themeID and style hints with class property 2024-10-04 15:20:49 -04:00
PatTheMav
5779b52d92 UI: Fix config class mismatch in OBSApp class 2024-09-18 16:29:01 -04:00
PatTheMav
607d37b423 UI: Rewrite profile system to enable user-provided storage location
This change enables loading profiles from locations different than
OBS' own configuration directory.

It also rewrites profile management in the app to work off an in-memory
collection of profiles found on disk and does not require iterating
over directory contents for most profile interactions by the app.
2024-09-12 16:18:46 -04:00
PatTheMav
2635cf3a2a UI: Split global config into app and user config
This introduces a split of the current single ConfigFile instance for
all configuration into two separate instances.

The app config instance contains system-wide settings that mainly
concern the working of the app itself, whereas the user config instance
contains settings actually exposed to the user for the configuration.
2024-09-12 16:18:46 -04:00
PatTheMav
710d99ef4d UI: Improve incremental compile times via explicit file includes
When a source file contains an explicit include with a filename
following the "moc_<actual-filename>.cpp" pattern, then CMake's
AUTOMOC generation tool will recognize the matching pair and generate
the replacement header file and add the required include directory
entries.

For all files which do contain Q_OBJECT or similar declarations but do
not have an explicit include directive, the global mocs_compilation.cpp
file will still be generated (which groups all "missing" generated
headers).

The larger this global file is, the more expensive incremental
compilation will be as this file (and all its contained generated
headers) will be re-generated regardless of whether actual changes
occurred.
2024-08-22 16:45:12 -04:00
derrod
ce3d739f3a UI: Only use preset2 in simple mode for legacy/FFmpeg NVENC 2024-08-22 14:33:22 +02:00
derrod
7a90c80b36 UI: Add suffix to deprecated encoders 2024-08-18 01:20:38 +02:00
derrod
feba2bcbf9 UI: Use new NVENC encoder ids 2024-08-08 22:52:40 +02:00
tytan652
48f139729f UI,shared: Move Qt Wrappers to its own directory 2024-07-27 07:38:36 +02:00
Ruwen Hahn
aa096e2ad0 UI: Disable multitrack video settings on non-win32 platforms 2024-06-19 12:50:34 -04:00
Ruwen Hahn
e4305b0a50 UI: Hide multitrack video options for custom output
Custom output doesn't currently allow specifying a config URL, so
disable relevant settings for now
2024-06-14 17:39:11 -04:00
Ryan Foster
77d31fa33f UI: Restore visibility of Advanced Settings warning
The warning message when changing Advanced settings that require a
restart was lost. Restore it.

Amends commit 7d55942601.
2024-06-13 14:42:25 -04:00
Warchamp7
7d55942601 UI: Clean up Settings widget structure and styling 2024-06-10 15:33:50 -04:00
Richard Stanway
ffdf541672 UI: Fix crash when entering settings
We refer to VOD tracks as 1-6 but internally the array is 0-5 so there's
an off-by-one error here.
2024-06-05 19:23:40 -04:00
Ruwen Hahn
1aa81117d6 UI: Add output settings indicators for eRTMP multitrack video 2024-06-04 20:50:46 -04:00
Ruwen Hahn
3f1362f7e7 UI: Add Multitrack Video settings 2024-06-04 20:50:46 -04:00
Ruwen Hahn
c8950900c3 UI: Add eRTMP Multitrack Video Output 2024-06-04 20:50:46 -04:00
Ruwen Hahn
976b200254 UI: Add custom server support for Twitch 2024-06-04 18:49:05 -04:00
Lain
f71a67cd3a Merge pull request #10608 from derrod/obs-mp4-muxer
Native Hybrid MP4 Muxer
2024-05-28 21:55:58 -07:00
gxalpha
9eca7b7525 UI: Fix Qt 6.7 checkbox signal deprecations
qt/qtbase@3512fb1ec5 deprecated the
stateChanged signal of QCheckBoxes in favor of a new checkStateChanged
signal. The signals are the same, except that now the enum type is
passed explicitly (before the enum was passed as an argument but defined
as an int).
2024-05-28 16:29:26 -04:00
derrod
4503f0a056 UI: Add Hybrid MP4 to format selection 2024-05-26 23:11:48 +02:00
derrod
503968671d UI: Add composable themes feature
Co-authored-by: Warchamp7 <warchamp2003@hotmail.com>
2024-04-21 00:01:16 -04:00
derrod
b76e0cd31b UI: Add 'Appearance' settings page 2024-04-21 00:01:16 -04:00
tytan652
d88e788f7f UI: Reduce settings dialog height if greater than the desktop
Co-authored-by: Warchamp7 <warchamp2003@hotmail.com>
Co-authored-by: derrod <dennis@obsproject.com>
Co-authored-by: Ryan Foster <ryan@obsproject.com>
2024-04-15 18:15:17 -04:00
GPattenden
60dd0c3ba6 UI: Move recording warnings to bottom of window 2024-04-07 00:39:22 -04:00
derrod
dc770b8fa8 UI: Disable scrolling for encoder properties 2024-03-23 16:43:28 -07:00
pkv
5bd22afe41 UI: Correctly toggle audio multi-track buttons
This toggles audio multi track display in Output settings when:
1. When there is a signal that a stream service is changed to a non
custom one. Indeed multi-track audio is only available with Custom
service and only with SRT or RIST protocols.
2. When a Custom service is picked, and SRT or RIST are detected in the
server URL.
3. When Stream settings are saved when one hits Apply.
This is in addition to the toggling done when loading Stream Settings.

Signed-off-by: pkv <pkv@obsproject.com>
2024-02-27 18:26:09 -05:00
DriftedClouds
db3072f33c UI: Add accessible names to hotkey edit boxes 2024-01-27 17:37:53 -06:00
derrod
0a8e00c478 UI: Add and migrate to GPU scaling options 2024-01-20 19:28:52 -06:00
pkv
f186268507 UI: Enable audio multi-track w/ mpegts streaming
This enables audio multi-track support in UI for mpegts streams (srt,
rist ...).
The UI changes were coded though to allow re-use by other protocols.

Signed-off-by: pkv <pkv@obsproject.com>
2024-01-06 18:42:54 -06:00
gxalpha
e9ecb6c565 UI: Make replay buffer settings always visible in Simple Mode
Instead of a checkbox in the recording group that reveals the replay
buffer group when pressed, the replay buffer group now has its own
toggle that enables or disables the replay buffer.
2023-11-27 15:29:57 -06:00
derrod
391eb5fac5 UI: Fix settings Apply button always being enabled 2023-09-06 12:29:25 -04:00
derrod
ef45248e40 UI: Fix ifdef for YouTube dock integration 2023-09-05 12:06:46 -04:00
Ryan Foster
ece8df2ace UI: Increase minimum output resolution to 32x32
Some hardware encoders fail in indecipherable ways if you try to at
certain low resolutions such as 17x17 or 19x19, but works at 20x20.
However, there is no good way to determine what the minimum working
resolution is for every possible encoder. There isn't that much
difference between 8x8 and 32x32, except that the latter will reduce or
eliminate such odd failure cases, so let's increase the minimum required
output resolution by just a little bit.
2023-08-26 16:32:24 -07:00
derrod
3e29844af7 UI: Set advanced audio encoder to invalid if missing 2023-08-15 15:54:07 -07:00
gxalpha
6721154924 UI: Use QCheckBox::toggled signal for checkbox changes
Like in 4f8b17d61, "toggled" is the signal that listens for changes
however they may have happened (including through things like
accessibility software), whereas clicked only is emitted on mouse
clicks. We should react to any kind of change, whatever prompted it.
2023-08-12 13:58:06 -04:00
gxalpha
4f8b17d612 UI: Use QGroupBox::toggled signal for group changes
The QGroupBox::clicked is specifically for mouse clicks. This means that
it's not emitted if the "checked" property is modified through other
means than the mouse, for example programatically or through
accessibility software like VoiceOver.
However, we do want to catch such events, so the QGroupBox::toggle
signal (which as per the Qt documentation is the notified signal for the
"checked" property) is the appropriate one to use.
2023-08-11 21:10:11 -04:00
Ryan Foster
64139a6bbd CI: Update to clang-format 16
This commit also modifies UI, libobs, and plugins.
2023-08-10 16:07:25 -04:00
Lain
78cb2aa361 UI: Fix case where cef func may not be present
Due to a particular... plugin we all know and love, the new
QCefWidget::executeJavascript() function may not actually be present as
it should be. So, we have to verify that it's available, and only use it
in that case.
2023-08-05 04:35:31 -07:00
Lain
e86b2950a2 UI: Fix build error (forgot macro) 2023-08-03 18:43:01 -07:00
Lain
0c6fa0a2ba UI: Fix YouTubeAppDock crash
Apparently the YouTube app dock thing didn't take into consideration the
fact that the user may have the browser source available, but may not
have browser docks available (via the `cef` global). This is because
certain system configurations do not support browser widgets, such as
Wayland on Linux.

(Lain note: There's multiple things I'm unhappy about here. I'm mostly
going to blame myself for multiple reasons.)
2023-08-03 18:25:25 -07:00
Yuriy Chumak
81b588137a UI: Add "YouTube Control Panel" dock panel
New dock panel with integrated youtube studio live control room.
This commit also modifies CI files.
2023-08-02 17:49:05 -07:00
derrod
c3ac912065 UI: Refactor getting the default encoder for a format 2023-08-01 11:43:38 -07:00
derrod
2f78bb7991 UI: Replace FFmpeg encoder alias with long name
The alias is not really helpful and sometimes confusing, e.g. for HEVC
(without libx265) it ends up being "hevc_nvenc (hevc_amf)" since it just
contains the name of the default encoder. So instead of using the name
of the default encoder, show the full name of the encoder instead.
2023-08-01 11:43:38 -07:00
derrod
c20bf0271c UI: Refactor FFmpeg utilities codec/format enumeration 2023-08-01 11:43:38 -07:00
derrod
c1cd268532 UI: Fix matching FFmpeg formats/codecs 2023-08-01 11:43:38 -07:00
derrod
f0407dd1cd UI: Migrate from libff 2023-07-30 15:58:21 -07:00
Lain
346b93c9c4 Merge pull request #8689 from gxalpha/no-more-signal-slot-macro
UI: SIGNAL and SLOT macros begone!
2023-07-29 16:32:56 -07:00
James Hurley
488a96bc4b UI: Add IPv4 / IPv6 selection setting
This commit adds a field in Settings -> Advanced called
'IP Address Family' that allows users to select IPv4 and
IPv6, IPv4 Only, or IPv6 Only.
2023-07-24 17:10:30 -07:00