Commit Graph

3559 Commits

Author SHA1 Message Date
Translation Updater
e6d9f73736 Update translations from Crowdin 2024-10-05 05:02:27 +00:00
Ryan Foster
a1fbf1015f clang-format: Increase column limit from 80 to 120 2024-10-04 18:19:27 -04:00
Suman Manjunath
9b8fa0f0ca UI: Enable first-party YouTube Chat features in OBS
Unlock the full feature set of the YouTube Chat dock in OBS by removing
custom scripting/CSS logic. Enable the signed-in experience for live
streaming content creators while also sharing login credentials with the
YouTube Control panel dock.

This will allow OBS users to utilize features _already_ supported in the
YouTube Chat plugin, such as

* creating polls
* managing Q&A sessions
* a rich emoji set in the input panel
* emoji fountains
* moderation tools

and many more. These features are available to users who are logged-in
to YouTube Chat and/or the YouTube Control panel.
2024-10-04 16:14:38 -04:00
Suman Manjunath
492309c504 UI: Use shared cookie manager for YT Control Panel
Use the cookie manager shared by service integration browser docks for
YouTube Control Panel.

This will enable users of the YouTube Chat panel have a better (creator
facing) experience for observed chat message latency, for those users
who sign-in to the YouTube Control Panel or YouTube Live Chat.

NOTE: This commit does not have any migration logic for existing
logged-in users of YTCP, they will need to sign-in again. Based on usage
stats, this is not going to affect a large fraction of OBS users.
2024-10-04 16:14:38 -04:00
Warchamp7
cb026964b0 UI: Replace themeID and style hints with class property 2024-10-04 15:20:49 -04:00
Dennis Sädtler
37ab500f93 UI: Set NV12 as preferred format for multitrack video encoders 2024-10-03 16:47:32 -04:00
gxalpha
ad5040cfd2 UI: Fix What's New increment settings mismatch
The InfoIncrement key in the application config everywhere else. This
mismatch caused the "What's New" menu entry to stop functioning.
2024-10-03 10:44:46 -04:00
gxalpha
e3435f8dee UI: Replace usage of obs_scene_sceneitem_from_source
Instead of first creating the scene item and then finding it again using
a method that's generally problematic (and only works here because we
know that there is only one instance of a source), let's just remember
the scene item in AddNew after we create it, similar to the source
itself.
2024-09-27 17:22:44 -04:00
PatTheMav
b4137fa65a UI: Fix crash when creating scene collections with "unsafe" names
Scene collection names that are not considered "safe" by OBS Studio
get a changed JSON file name with incompatible characters replaced.

The refactored scene collection implementation uses the Load function to
either activate an existing scene collection or create a new one if it
does not exist.

The Load function however overwrote the scene collection name set in
the profile with its own variant based off the "safe" file name, which
created a mismatch with the code that created the collection data
model.

As the Load function is only called by ActivateSceneCollection (which
itself already sets the name and filename for the collection), removal
of this superfluous code in the Load function also fixes the issue.
2024-09-27 14:01:38 -04:00
Norihiro Kamae
6fed2c2bdd UI: Fix error color at clipping is not displayed on horizontal meter 2024-09-27 13:30:10 -04:00
PatTheMav
32cfa1626f UI: Fix missing support for portable configuration files
Windows and Linux allow the storage of configuration files relative
to the binary location, which is enabled by default on Windows and has
to be explicitly enabled on Linux.

This was originally conflated with the LINUX_PORTABLE build setting
which also allowed the application itself to be run from non-default
locations on a Linux system.

This change reintroduces the functionality behind the
ENABLE_PORTABLE_CONFIG build setting on Linux.

It also adds necessary code to make this setting compatible with the
recently introduced relocatable settings code changes:

When portable mode is enabled, user configuration, scene collections,
and profiles are stored in the config directory created for portable
mode.
2024-09-26 14:39:44 -04:00
Norihiro Kamae
06642fdee4 UI: Fix low value of std::clamp gets greater than high value
`std::clamp` was introduced at 60a45d3aa3 but it caused a runtime
assertion failure on Windows that checks the low value of `std::clamp`
is not greater than the high value.
2024-09-18 17:15:02 -04:00
PatTheMav
5779b52d92 UI: Fix config class mismatch in OBSApp class 2024-09-18 16:29:01 -04:00
PatTheMav
b9808eaca8 UI: Fix outdated scene collection and profile method names 2024-09-16 15:53:51 -04:00
PatTheMav
f9f974fe7b cmake: Update use of MbedTLS to support update to version 3.6.0
MbedTLS changed a lot of internals with their LTS version 3.6.0, which
are incompatible with the find module currently shipped with
OBS Studio.

The solution requires several changes to be applied at once:

* Rename the generated target name to MbedTLS::mbedtls to match the
  name used by MbedTLS' own CMake package
* Update find module to use the updated target name(s)
* Set CMAKE_FIND_PACKAGE_PREFER_CONFIG to TRUE before trying to find
  MbedTLS to ensure that CMake package files are used with priority
  (Those are shipped only with MbedTLS 3.6.0 in obs-deps).
* A deprecation warning is emitted if the find module is used with
  MbedTLS 3.6.0 available
2024-09-13 18:30:42 -04:00
PatTheMav
6c590805e8 cmake: Update supported CMake version range to 3.28 and 3.30 2024-09-13 14:42:32 -04:00
PatTheMav
3e0592dc20 UI: Rewrite scene collection system to enable user-provided storage
This change enables loading scene collections 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
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
tytan652
31385006d5 Remove legacy_check CMake macro
The macro was not removed in 72428ccd97
waiting for submodules to be be updated to a commit where their legacy
code path is removed.
2024-09-11 13:24:39 -04:00
Alex Luccisano
97d9826352 UI: Fix multitrack video autoconfig option
When using the Auto-Configuration Wizard with the
Twitch service, testing for Enhanced Broadcasting would
always run, even if deselected. Add a conditional check
to only run the test if selected.
2024-09-10 16:04:56 -04:00
Ruwen Hahn
adcaf539c9 UI: Add Amazon IVS auto config QoL changes
This doesn't generally make the speedtest work for Amazon IVS, since
most Amazon IVS channels will be disconnected if the bitrate being
sent exceeds the upper limit for that channel.
2024-09-06 13:40:07 -04:00
Alex Luccisano
ea9e033d26 UI: Enable BPM for multitrack video 2024-09-05 16:38:58 -04:00
Alex Luccisano
07d504e5c7 shared/bpm: Add BPM (Broadcast Performance Metrics)
Introduce support for delivering BPM (Broadcast
Performance Metrics) over SEI (for AVC/H.264 and
HEVC/H.265) and OBU (for AV1) unregistered messages.
Metrics being sent are the session frame counters,
per-rendition frame counters, and RFC3339-based
timestamping information to support end-to-end
latency measurement.

SEI/OBU messages are generated and sent with each IDR
frame, and the frame counters are diff-based, meaning
the counts reflect the diff between IDRs, not the running
totals.

BPM documentation is available at [1].

BPM relies on the recently introduced encoder packet timing
support and the packet callback mechanism.

BPM injection is enabled for an output by registering
the `bpm_inject()` callback via `obs_output_add_packet_callback()`
function. The callback must be unregistered using
`obs_output_remove_packet_callback()` and `bpm_destroy()`
must be used by the caller to release the BPM structures.

It is important to measure the number of frames successfully
encoded by the obs_encoder_t instances, particularly for
renditions where the encoded frame rate differs from the
canvas frame rate. The encoded_frames counter and
`obs_encoder_get_encoded_frames()` API is introduced
to measure and report this in the encoded rendition
metrics message.

[1] https://d50yg09cghihd.cloudfront.net/other/20240718-MultitrackVideoIntegrationGuide.pdf
2024-09-05 16:38:58 -04:00
tytan652
34735be094 UI: Fix Qt UIC warning in settings UI 2024-08-31 12:06:38 -04:00
gxalpha
7b0e154245 UI: Replace remaining SIGNAL/SLOT macros 2024-08-31 11:39:08 -04:00
tytan652
72428ccd97 Remove CMake legacy code path
Except submodules and legacy_check macro since the former depend on it.
2024-08-28 13:53:25 -04:00
derrod
8251005ad3 UI: Add migration for relative coordinate system 2024-08-27 23:58:51 +02:00
Exeldro
4cdbbacaff UI: Fix warning color 2024-08-27 13:58:17 -04:00
gxalpha
15e9242acb UI: Add warning to Custom FFmpeg mode 2024-08-25 20:37:46 +02:00
Norihiro Kamae
60a45d3aa3 UI: Use std::clamp instead of macro 2024-08-24 16:16:08 -07:00
gxalpha
ec5f499cb3 UI: Inline macOS 13 check 2024-08-23 22:09:48 -04:00
Exeldro
200abd3af0 UI: Force UpdateEditMenu on UI Thread 2024-08-23 21:27:43 -04:00
derrod
3ebe071c7b UI: Remove compatibility with FFmpeg < 6.1 2024-08-23 13:44:04 -04:00
derrod
834c15e717 UI: Remove legacy Qt workarounds (Ubuntu 22.04) 2024-08-23 13:44:04 -04:00
derrod
b0e1eced04 UI: Remove legacy nlohmann workaround (Ubuntu 22.04) 2024-08-23 13:44:04 -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
8758ece291 UI: Remove now unused GetMonitorName for Qt < 6.4 2024-08-20 18:03:37 -04:00
EBK21
117ee9cf44 win-update: Use correct winhttp proxy type
Legacy one does not provide correct result on some setups, use new one on 10+ .
2024-08-19 13:25:33 +02:00
Warchamp7
81fa608cde UI: Add preview scrollbars
This adds scrollbars to the preview, so users can move around the
preview without using the spacebar + clicking.

Co-Authored-By: Clayton Groeneveld <19962531+cg2121@users.noreply.github.com>
2024-08-18 03:18:03 +02:00
cg2121
f07d2cd621 UI: Use signal vector for advanced audio dialog
Simplifies code by using a vector instead of individual signals.
2024-08-17 17:15:10 -07:00
derrod
7a90c80b36 UI: Add suffix to deprecated encoders 2024-08-18 01:20:38 +02:00
derrod
418c9b87cf UI: Fixup ResolveVariable to be less jank 2024-08-17 16:05:26 -07:00
PatTheMav
b8cfacaec3 Update formatting of CMake files 2024-08-14 12:07:47 -04:00
jcm
1b25acd184 UI: Don't create default desktop audio source on macOS 13+ 2024-08-12 22:45:16 +02:00
cg2121
89554112c1 UI: Cleanup frontend event handling
This adds a function to OBSBasic to call on_event, so every
time a event is called, the api variable doesn't have to be
checked everytime.
2024-08-10 17:35:22 -07:00
cg2121
0306effc5f UI: Add pragma once to ScreenshotObj header
Makes sure header is only included once preventing code clashes.
2024-08-11 09:53:34 +10:00
derrod
feba2bcbf9 UI: Use new NVENC encoder ids 2024-08-08 22:52:40 +02:00
Norihiro Kamae
84b321e95e UI: Remove unused static-inline function 2024-08-07 17:27:49 -04:00