0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-19 20:32:15 +02:00
Commit Graph

14514 Commits

Author SHA1 Message Date
Ryan Foster
d7c798c60d CI: Use Windows 11 SDK 10.0.22621.0
Before 6c590805e8, builds on Windows would
automatically select a Windows SDK using CMake's rules:

https://cmake.org/cmake/help/v3.25/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION.html
https://cmake.org/cmake/help/v3.30/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION.html
https://cmake.org/cmake/help/v3.30/policy/CMP0149.html

This meant that CI Windows builds would end up using SDK 10.0.20348.0
because that matched the runner's OS version exactly. Locally, if a
Windows SDK version that exactly matched the host system version was not
installed, CMake would select the latest Windows SDK available. This
caused some observed differences in build success between CI and local
builds if a newer SDK was used locally.

The Windows runners have the 10.0.22621.0 SDK installed, so let's
specifically select that.
2024-09-13 19:08:22 -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
Ryan Foster
f036b0dc3f CI: Update softprops/action-gh-release to v2.0.8 2024-09-13 17:40:42 -04:00
Ryan Foster
232e40f41e CI: Update peter-evans/create-pull-request to v7.0.2
We're currently using peter-evans/create-pull-request v6.0.0 which has a
known issue that affects our services-validator action when attempting
to update an existing PR. This issue was fixed in v6.0.1, but we can
update to v7.0.2.
2024-09-13 17:40:42 -04:00
Etaash Mathamsetty
2a0e614228 build-aux: Use fallback-x11 instead of x11 2024-09-13 16:48:56 -04:00
Kurt Kartaltepe
2ecf2c802c obs-qsv11: Initialize allocator response
We check that mids is a nullptr which may not be the case if this
remains uninitialized. Earlier attempt to fix this assumed we faulted on
the response itself.

fixes #11221
2024-09-13 16:27:02 -04:00
Gale, Thy-Lan
53853df33a obs-qsv11: Add AV1 Screen Content Tools 2024-09-13 15:23:35 -04:00
PatTheMav
6c590805e8 cmake: Update supported CMake version range to 3.28 and 3.30 2024-09-13 14:42:32 -04:00
Exeldro
7a35d7c549 obs-ffmpeg: Add logging of audio track 2024-09-12 18:07:19 -04:00
Exeldro
5b79b4b74d libobs: Add obs_encoder_get_mixer_index 2024-09-12 18:07:19 -04:00
PatTheMav
cfc12d0543 cmake: Disable CCache for local builds and enable by default for CI 2024-09-12 17:45:29 -04:00
jcm
552a88a895 mac-virtualcam: Compare camera UUIDs using CFUUID 2024-09-12 17:21:12 -04:00
PatTheMav
4dac84999d libobs: Update macOS platform implementation
Cleans up the source code by sorting functions by topic and also
removes macros for hotkey implementation, removing the need to disable
compiler warnings.

Key codes and descriptions are now contained in arrays which either
use the OBS key code or the macOS key code as lookup keys with all
necessary context information directly associated with the key.

The implementation also uses the zero-initialization rule for arrays
of structs in such a way that the struct's "is_valid" boolean is
"false" by default so that only values explicitly initialized with a
key are ever "valid".
2024-09-12 16:44:39 -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
26d275223a libobs-opengl: Relax texture format copy check
SRGB and non-SRGB formats are compatible for copy.
2024-09-12 15:35:46 -04:00
Fabien Lavocat
8b31c487ba rtmp-services: Remove outdated Dolby Millicast locations 2024-09-12 15:13:16 -04:00
gxalpha
a5ebb05c60 CI: Remove run-cmake-format action
cmake-format was replaced with gersemi in
19d3e30a3a and this action is now unused
(and wouldn't work anymore anyways due to the removal of the
./build-aux/run-cmake-format script).

This commit includes build-aux README fix-ups where the now nonexistent
run-cmake-format script was mentioned and the run-gersemi script was
misspelled.
2024-09-12 14:20:28 -04:00
gxalpha
922e2cc151 cmake: Remove remaining cmake-format comments
cmake-format was replaced with gersemi in
19d3e30a3a. As such, these comments no
longer have any effect.
2024-09-12 14:20:28 -04:00
Paul Gregoire
62c4a90809 obs-webrtc: Add STUN support to Link header parse 2024-09-11 13:55:54 -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
Norihiro Kamae
e87593b3d4 obs-nvenc: Fix reading uninitialized variable 2024-09-11 13:02:58 -04:00
Vainock
7385947780 CI: Fix condition for changed files in upload locales action 2024-09-11 12:26:37 -04:00
derrod
e25a8b3a4f obs-nvenc: Check if device index in settings object is actually set 2024-09-10 18:50:49 -04:00
derrod
4b0777a303 obs-nvenc: Support new error code for too many sessions
At some point NVIDIA started using NV_ENC_ERR_INCOMPATIBLE_CLIENT_KEY
instead of NV_ENC_ERR_OUT_OF_MEMORY to signal that the session limit
has been exceeded.
2024-09-10 17:51:34 -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
pkv
de2e42b231 nv-filters: Remove unused flag in cmake
This removes the HAS_NOISEREDUCTION flag which is not used in this
plugin.

Signed-off-by: pkv <pkv@obsproject.com>
2024-09-10 14:50:46 -04:00
pkv
7fdcb166b4 obs-filters: Fix building of noise reduction
If speex and rnnoise are disabled but nvafx is enabled, the noise
reduction filter still needs to be built. This fixes the issue.

Co-authored-by: Ryan Foster <ryan@obsproject.com>
Signed-off-by: pkv <pkv@obsproject.com>
2024-09-10 14:50:46 -04:00
Norihiro Kamae
e3265fd3e6 CI: Enable diagnostics color on CI build on Ubuntu 2024-09-10 14:30:17 -04:00
Norihiro Kamae
14aaaa325b cmake/linux: Move color diagnostics setting to preset for ubuntu-ci
This also removes color diagnostics setting for cmake < 3.24.
2024-09-10 14:30:17 -04:00
Gale, Thy-Lan
9f4f2e9754 obs-qsv11: Fix CBR Spike 2024-09-10 14:13:29 -04:00
tytan652
129d4f2f3f cmake: Avoid breaking ABI through major version bump on Linux
Freeze SOVERSION to 30, this number is to be incremented when a clean
break is wanted.
2024-09-10 00:41:26 -04:00
Scott Cooper
dfe6151465 win-capture: Fix segfault when calling data.free()
data.free should be checked before calling.
2024-09-07 16:09:03 -07:00
Ryan Foster
df742ed032 CI: Pin actions/upload-artifact to v4.3.5 for windows-patches
Work around a bug with too many open files in versions before v4.3.5 and
also in v4.3.6 due to a revert. The relevant error message is:

Error: EMFILE: too many open files

We applied the same workaround to release/30.2.
2024-09-06 14:49:07 -04:00
Alex Luccisano
e11d206da8 rtmp-services: Refactor Twitch/Amazon IVS support
Separate the commonly used functions into service-ingest.c/h.
Split the Amazon IVS support out of the Twitch specific files
and into the new amazon-ivs.c/h files. This allows for clean
usage of `struct ingest` between the two services.
2024-09-06 13:40:07 -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
Ruwen Hahn
fc60ca63dc rtmp-services: Add Amazon IVS auto server entries 2024-09-06 13:40:07 -04:00
Ruwen Hahn
6fbb06d1c2 rtmp-services: Load Twitch/Amazon IVS rtmps URLs when refreshing 2024-09-06 13:40:07 -04:00
Ruwen Hahn
6440a60d1d rtmp-services: Add Amazon IVS ingest refresh infrastructure 2024-09-06 13:40:07 -04:00
Ruwen Hahn
717161f246 rtmp-services: Extract Twitch specific info from ingest update code 2024-09-06 13:40:07 -04:00
Ruwen Hahn
b029ebfdc2 rtmp-services: Add more granular Amazon IVS service servers 2024-09-06 13:40:07 -04:00
tytan652
8963d25dd2 build-aux: Update Flatpak modules
* Update SVT-AV1 to 2.2.1
* Update FFmpeg to 7.0.2
* Update LuaJIT to 2.1 f725e44cda
* Update Asio to 1.31.0
* Update qrcodegen-cmake to v1.8.0-cmake3
2024-09-05 23:56:00 -04:00
Ryan Foster
6bd2fdd717 CI: Update deps to 2024-09-05 release
Notable changes:
 * deps.windows: Disable x86 build slice for dependencies
 * deps.qt: Disable x86 build slice for Qt6
 * CI: Remove Windows x86 slices for Qt6 and FFmpeg builds
 * deps.ffmpeg: Disable Windows x86 build slice for FFmpeg dependencies
 * deps.ffmpeg: Update libvpx to v1.14.1
 * deps.ffmpeg: Update SVT-AV1 to 2.2.1
 * deps.ffmpeg: Update aom to 3.9.1
 * deps.ffmpeg: Update AMF to 1.4.34
 * deps.ffmpeg: Update FFmpeg to 7.0.2
 * deps.macos: Update LuaJIT to 2.1 f725e44cda
 * deps.macos: Update FreeType to 2.13.3
 * deps.macos: Update Asio to 1.31.0
 * deps.macos: Update qrcodegen-cmake to v1.8.0-cmake3
 * deps.macos: Update Sparkle to 2.6.4
 * deps.qt: Update Qt to 6.7.2 for macOS
 * deps.qt: Update Qt to 6.7.2 for Windows
 * deps.windows: Update FreeType to 2.13.3
 * deps.windows: Update curl to 8.9.1
 * deps.windows: Update LuaJIT to 2.1 f725e44cda
 * deps.windows: Update Asio to 1.31.0
 * deps.windows: Update qrcodegen-cmake to v1.8.0-cmake3
 * deps.windows: Update WIL to v1.0.240803.1
 * deps.ffmpeg: Remove MbedTLS CMake files from macOS FFmpeg package

Also update Sparkle to match the obs-deps version.
2024-09-05 23:32:34 -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
Alex Luccisano
0a36ed1164 libobs: Add a packet callback mechanism
Packet callbacks are invoked in `send_interleaved()` and
are useful for any plugin to extend functionality at the
packet processing level without needing to modify code in
libobs. Closed caption support is one candidate that is
suitable for migration to a packet callback.

The packet callback also supports the new encoder packet
timing feature. This means a registered callback will have
access to both the compressed encoder packet and the associated
encoder packet timing information.
2024-09-05 16:38:58 -04:00
Alex Luccisano
6a53b8928f libobs: Add encoder packet timing support
Introduce support for the `encoder_packet_time` struct
to capture timing information for each frame, starting
from the composition of each frame, through the encoder,
to the queueing of the frame data to each output_t.

Timestamps for each of the following events are based on
`os_gettime_ns()`:

CTS: Composition time stamp (in the encoder render threads)
FER: Frame encode request
FERC: Frame encoder request completely
PIR: Packet interleave request (`send_interleaved()`)

Frame times are forwarded through encoder callbacks in the
context that runs on the relevant encoder thread, ensuring
no race conditions with accessing per encoder array happen.
All per-output processing happens on data that is owned by
the output.

Co-authored-by: Ruwen Hahn <haruwenz@twitch.tv>
2024-09-05 16:38:58 -04:00
Ruwen Hahn
26b7b4511c libobs/util: Add os_nstime_to_timespec 2024-09-05 16:38:58 -04:00
Ryan Foster
f5646c6aaf obs-websocket: Update version to 5.5.3
Changes:
- Remove legacy CMake
- Fix various build issues

Changelog:
a73c92788d
2024-09-05 15:45:31 -04:00