Commit Graph
60 Commits
Author SHA1 Message Date
Ryan Foster af59a903e1 CI: Revert Qt to 6.3.1 on Windows 2023-01-19 16:08:02 -05:00
Ryan FosterandJim 88ea0bbb56 Revert "libobs-d3d11: Default to Intel IGPU on IGPU+DGPU systems"
This reverts commit c83eaaa51c.
2022-12-30 21:14:15 -08:00
Ryan FosterandJim 19abcbcd3c Revert "libobs-d3d11: Make sure libobs knows the new adapter index"
This reverts commit e62759a3fa.
2022-12-30 21:14:15 -08:00
Ryan FosterandJim 8dde4bab1e Revert "libobs: Fix adapter index not getting applied to resets"
This reverts commit 02d20e9f36.
2022-12-30 21:14:15 -08:00
Ryan FosterandJim 436643c3b9 UI: Fix Qt AutoUic warning
Currently, Qt's User Interface Compiler (UIC) emits a warning about the
tabstop assignment for horizontalLayout_sdrPaperWhite, which is a
QLayout rather than a QWidget. Remove the tabstop assignment to fix the
warning.
2022-12-10 15:02:38 -08:00
Ryan Foster 9f31a9d7a5 libobs: Suppress LNK4098
Suppress LNK4098 to allow building against pre-built Jansson for now.
2022-11-22 00:14:16 -05:00
Ryan Foster bfcca93424 rtmp-services: Suppress LNK4098
Suppress LNK4098 to allow building against pre-built Jansson for now.
2022-11-22 00:14:16 -05:00
Ryan Foster 03c837d448 CI: Update deps to obs-deps 2022-11-21 release
Notable changes:
 * Add Jansson to Windows deps
 * Update zlib to 1.2.13
 * Update libpng to 1.6.38
 * Update opus to bce1f39235
 * Update SVT-AV1 to 1.3.0
 * Update aom to 3.5.0
 * Update x264 to r3101
 * Update libsrt to 1.5.1
 * Update AMF to 1.4.26
 * Update FFmpeg to 5.1.2
 * Update LuaJIT to 2.1 7a0cf5fd4c
 * Windows: Update cmocka to cd95ee9f77
 * Windows: Update curl to 7.86.0
 * Qt: Update Qt5 to Qt 5.15.7 for Windows
 * Qt: Update Qt6 to Qt 6.4.1 for Windows
 * Qt: Update Qt5 to Qt 5.15.7 for macOS
 * Qt: Update Qt6 to Qt 6.4.1 for macOS
2022-11-21 18:22:54 -05:00
Ryan FosterandJim 46e17a1160 obs-ffmpeg: Fix SVT-AV1 rate control mode selection
In updated versions of FFmpeg (5.1.x) and SVT-AV1 (1.2.0/1.3.0), the
rate contol mode selection mechanism has changed, causing CBR to throw
an "Invalid Parameter" error and the encoder will fail to start. This
appears to be caused by us specifying rc_max_rate, which will also fail
on FFmpeg CLI. Adjust how we manage rate control methods, appropriately
version-gated, to work with both our current dependency versions and the
versions that we'd like to use.
2022-11-19 15:44:12 -08:00
Ryan Foster 90f7a08237 UI: Change Simple Output NVENC default preset to P5
To avoid the user having lookahead enabled with no way to disable it,
change the Simple Output Mode NVENC Preset from P6 to P5.

Follow up to 8806738a04.
2022-11-18 20:51:40 -05:00
Ryan Foster dd5745c66e CI: Re-enable scripting in Windows builds
In dfccb26bb2, in my haste to fix Windows
CI, I accidentally included a change to disable Windows scripting which
I had been using locally. Reverse that change to re-enable scripting in
Windows builds.
2022-11-18 20:46:32 -05:00
Ryan Foster dfccb26bb2 CI: Fix building in PowerShell 7.3.x
The backtick double-quote pattern does not work in PowerShell 7.3.x.
There are still some other possible PowerShell 7.3.x issues in the
packaging steps, but let's fix this first to get regular builds working
in PowerShell 7.3.x again.
2022-11-16 12:20:23 -05:00
Ryan FosterandGitHub 8ad6579511 Merge pull request #7466 from pkviet/gr_v2
obs-filters: Warn when NVIDIA FX needs update, Update to v0.7.1 Video SDK & Add a mask refresh slider
2022-11-11 17:47:29 -05:00
Ryan FosterandGitHub 8efb5bc028 Merge pull request #6842 from PatTheMav/sprintf-deprecation
Remove discouraged and deprecated usage of sprintf across the codebase
2022-11-11 14:35:55 -05:00
Ryan FosterandJim 77fbfbe5c6 obs-ffmpeg: Cap NVENC Max B-frames according to GPU caps
Erroring out of NVENC init early if the Max B-frames setting was higher
than the encoder's capability causes an encoder failure on NVIDIA Pascal
(10-series) and earlier GPUs due to an unfortunate interaction between
Simple Output Mode, HEVC, and our default B-frames setting of 2. Since
we already check the Max B-frames capability of the encoder, cap at that
value instead of erroring out.

Fixes #7698.
2022-11-01 15:26:23 -07:00
Ryan FosterandJim 1bd43220d5 UI: Migrate Simple Output NVENC preset 2022-10-31 22:51:24 -07:00
Ryan FosterandJim c6fbeaaf6d UI: Refactor NVENC preset migration
Refactor the NVENC preset migration code to avoid having to maintain
more copies of the preset mappings.
2022-10-31 22:51:24 -07:00
Ryan Foster 0ddba5d644 obs-ffmpeg: Split NVENC preset migrations by codec
This commit also modifies UI.
2022-10-31 17:02:51 -04:00
Ryan Foster a36427c0ab UI: Add NVENC preset migration for lossless 2022-10-31 17:02:51 -04:00
Ryan Foster 891e3b0f49 obs-ffmpeg: Align NVENC preset migrations to NVIDIA guidelines
Bring our NVENC preset migrations closer in line with NVIDIA guidelines.

https://docs.nvidia.com/video-technologies/video-codec-sdk/nvenc-preset-migration-guide/

This commit also modifies UI.
2022-10-31 17:02:51 -04:00
Ryan Foster 254dc4081c obs-ffmpeg: Add NVENC preset mapping for old Default preset
The old NVENC preset "Default", labeled in OBS as "Performance", maps to
the new P3 preset when not using multipass. Since we previously only
enabled multipass/two-pass on "Max Quality", we can map this to P3 in
all cases.

This commit also modifies UI.
2022-10-31 17:02:51 -04:00
Ryan Foster 08f7a3778d obs-ffmpeg: Swap hq and mq preset order
This is for consistency with b2ff22a587.
Max Quality (mq) is "higher" than Quality (hq), and it's helpful for the
code order to reflect that.
2022-10-31 17:02:51 -04:00
Ryan FosterandGitHub beb649c06d Merge pull request #7581 from PatTheMav/virtualcam-fixes
mac-virtualcam: Fix crashes in apps loading virtual camera and performance fixes
2022-10-18 20:25:25 -04:00
Ryan Foster 7c66b125ae CI: Update GitHub Actions for set-output deprecation
GitHub Actions has deprecated set-output. Replace usages of set-output
in stdout with the new syntax to save the output to the new environment
variable.

See:
https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
2022-10-18 17:48:22 -04:00
Ryan FosterandJim b2ff22a587 UI: Swap mq and hq NVENC Preset mappings
The old preset "mq" was "Max Quality", which used the old HQ preset with
two-pass enabled. The old preset "hq" was "Quality", which used the old
HQ preset without two-pass. Of the two, "mq" would have been considered
"slower" or "higher quality" than "hq", so let's swap these entries.
2022-10-12 21:21:03 -07:00
Ryan FosterandJim c5f1446ab3 obs-ffmpeg: Cap AMF encoder at 100 Mbps
The AMF docs specify that the maximum value for TARGET_BITRATE and
PEAK_BITRATE is 100,000,000 bit/s. Trying to set values above this
maximum value results in AMF choosing from its defaults instead of
capping at the maximum value. Let's cap at 100,000 Kbps in the UI to
prevent users from running in to this.

Fixes GitHub Issue obsproject/obs-studio#7423.
2022-09-24 16:38:17 -07:00
Ryan FosterandJim 7d853fb155 UI/updater: Only run updater on Windows 10+
OBS Studio 28 no longer supports Windows 7, 8, or 8.1, and Qt 6 will
fail to run on those versions. Users on those systems being offered the
update will end up in a state where OBS will not run if they install the
update. Let's prevent the updater executable from running on those
versions to avoid that scenario.
2022-09-02 18:03:17 -07:00
Ryan FosterandGeorges Basile Stavracas Neto 11bc39fe7c UI: Get correct coordinates for items in Scene Grid Mode
The x() and y() values of coordinates for events inside a scrollable
QWidget are relative to viewport's scrolled origin, the coordinates of
the upper left corner of the visible space, not the widget's true
origin. Since we do not allow horizontal scrolling, the value of x() is
okay. However, the value of y() needs to be adjusted by an offset of the
top()/y() value for the first widget in the SceneTree. When not
scrolled, this offset will be 0. When scrolled down, this offset will be
a negative value.
2022-08-29 18:22:45 -03:00
Ryan FosterandGeorges Basile Stavracas Neto 5b0ae8c70d UI: Fix scrollbar enablement in Scene Grid Mode
The UI layout math used to determine if scrollbars should be displayed
in the Scenes Dock was off by one pixel. This caused the scrollbar to
disappear when performing actions while scrolled to the bottom, such as
dragging items or resizing the dock.
2022-08-29 18:22:45 -03:00
Ryan FosterandGeorges Basile Stavracas Neto fd0c4b7d09 UI: Resize SceneTree after dropEvent
Calling resizeEvent for SceneTree after a dropEvent has occurred
prevents a dropped item from being displayed in the incorrect location
while in Grid Mode. There might be a better way to fix the incorrectly
displayed location of a dropped item, but we already do this in
SetGridMode and rowsInserted, so this is probably okay.
2022-08-29 18:22:45 -03:00
Ryan Foster f344c9106b flatpak: Use FFmpeg GitHub mirror
The ffmpeg.org domain has had periods of instability recently. If GitHub
is down, our entire CI is down, so let's use the FFmpeg GitHub mirror.
2022-08-06 19:52:34 -04:00
Ryan Foster 7a975fddc0 CI: Update deps to obs-deps 2022-08-02 release
Changes:
 * Exclude symbols from SRT DLLs

This fixes multiple possible crashes with the Media Source due to
symbols collision.
2022-08-01 23:28:41 -04:00
Ryan Foster d39d5f3712 CI: Fix packaging scripts
On CI, do not fetch tags in packaging scripts. For some reason, the
checkout action seems to locally update any new git tags on the runner:

t [tag update]   (commit-hash) -> tag-name

This causes future calls to fetch git tags to fail on CI with:

! [rejected]   tag-name -> tag-name  (would clobber existing tag)

To avoid this, we can simply not fetch tags a second time on CI.

Additionally, fix the Windows Installer job.
2022-08-01 21:38:56 -04:00
Ryan Foster b4e056f39d CI: Use Qt6 by default when available 2022-07-31 13:45:57 -04:00
Ryan FosterandMatt Gajownik 59e91c7c58 CI: Fix Linux package filename version
In .github/workflows/main.yml, for the linux_build job, the variable
BUILD_FOR_DISTRIBUTION is set to the string "true" or "false" on CI.
Later, in CI/linux/03_package_obs.sh, we perform a boolean check on
this variable. However, "false" will evaluate as true, because it is a
non-null string. This was causing CI Linux packages to always build as
if BUILD_FOR_DISTRIBUTION was enabled, which caused the git commit hash
to be omitted from package filenames.

Since we know the expected values, let's just test directly if the
variable equals "true" to get the expected behavior.
2022-07-31 10:24:36 +10:00
Ryan FosterandGitHub 23fcc02747 Merge pull request #6134 from pkviet/nativesrtrist
obs-ffmpeg: Support native SRT & RIST output
2022-07-30 11:27:22 -04:00
Ryan Foster 7bfc7e65f4 CI: Update deps to obs-deps 2022-07-29 release
Notable changes:
 * Use VS2022
 * Update zlib to 1.2.12
 * Update opus to ab04fbb1b7
 * Update libvpx to 1.12.0
 * Update SVT-AV1 to 1.1.0
 * Update aom to 3.4.0
 * Update x264 to r3095
 * Update mbedTLS to 3.2.1
 * Update libsrt to 1.5.0
 * Update librist to 809390b3b7
 * Update AMF to 1.4.24
 * Update FFmpeg to 5.0.1
 * Update FreeType to 2.12.1
 * Update LuaJIT to 2.1 3065c910ad
 * Update SpeexDSP to 1.2.1
 * macOS: Update Jansson to 2.14
 * Windows: Update libogg to 1.3.5
 * Windows: Update libvorbis to 84c023699c
 * Windows: Update cmocka to bbf5ff7dd5
 * Windows: Update curl to 7.84.0
 * Windows: Update VulkanSDK to 1.3.216.0
 * Windows: Update nasm to 2.15.05
 * Windows: Update Python to 3.8.10
 * Qt: Update Qt5 to Qt 5.15.5 for Windows
 * Qt: Update Qt6 to Qt 6.3.1 for Windows
 * Qt: Update Qt5 to Qt 5.15.5 for macOS
 * Qt: Update Qt6 to Qt 6.3.1 on macOS
 * Qt: Backport Windows native scale factor fix
2022-07-30 00:14:56 -04:00
Ryan Foster 4e4afcd6d1 UI: Deduplicate UI element names
Prevent some warnings from AutoUIC.
2022-07-28 15:38:22 -04:00
Ryan FosterandGitHub 2741b8c885 Merge pull request #2212 from VodBox/group-edit-mode
UI: Add various preview improvements
2022-07-28 10:40:43 -04:00
Ryan Foster 81bd1d42f0 CI: Use VS2022 and clang-format 13
Switch to Visual Studio 2022 and clang-format 13.

The Ubuntu 22.04 image currently has clang-format 12.0.1, 13.0.1, and
14.0.0. VS2022 17.2 ships clang-format 13.0.1, so let's use that for now
until VS2022 17.3 is available with clang-format 14.

This commit also makes the necessary changes to allow the clang-format
check to pass.

This commit also updates the obs-browser submodules with the necessary
changes.
2022-07-27 11:09:59 -04:00
Ryan Foster 8514c6c1e2 CI: Fix clang-format if path has spaces
If the path to clang-format has spaces, as might occur when testing
locally with a version not covered in this script, it will fail. Enclose
the call to clang-format in quotes to prevent this failure.
2022-07-26 22:36:13 -04:00
Ryan FosterandGitHub 191d276377 Merge pull request #6782 from tytan652/refactor_findqt
Refactor find_qt CMake macro to select Qt version automatically if not specified
2022-07-26 11:35:10 -04:00
Ryan FosterandGitHub 933255a680 Merge pull request #6372 from pkviet/rtxaudio
obs-filter: Add new RTX audio fx (dereverb & combined denoiser+ dereverb)
2022-07-24 10:31:36 -04:00
Ryan FosterandJim 614ff22e8d obs-outputs: Fix TLS_client init for mbedTLS 3.1.0+
When trying to update to mbedTLS 3.2.1, I ran into failures with RTMPS
output. After consulting an mbedTLS implementation example, I determined
that we were not setting up the SSL/TLS context config in the correct
order, causing the connection to fail. Performing the setup in the
recommended order fixes that.
2022-07-23 16:40:59 -07:00
Ryan Foster d88ca3b243 UI: Suppress LNK4098
defaultlib 'MSVCRT' conflicts with use of other libs; use
/NODEFAULTLIB:library
2022-07-20 19:32:34 -04:00
Ryan Foster efcfc86444 CI: Update deps to obs-deps 2022-07-18 release
Changes:
 * Windows: Fix AV1 encoder enablement
2022-07-19 11:02:43 -04:00
Ryan Foster beaae2b9ce CI: Update deps to obs-deps 2022-07-08 release
Notable changes:
 * Windows: Add Qt 5 and 6 builds
 * Windows: Remove nasm native build
 * Windows: Update srt from 1.4.2 to 1.4.4
 * Windows: Update SWIG from 3.0.12 to 4.1.0-git
 * macOS: Update libvpx from 1.10.0 to 1.11.0
 * macOS: Update srt from 1.4.1 to 1.4.4
 * macOS: Update SWIG from 3.0.12 to 4.1.0-git
 * macOS: Update x264 from r3059 to r3060
2022-07-14 11:22:36 -04:00
Ryan FosterandMatt Gajownik 231c91846d CI: Update Ubuntu versions
Ubuntu 22.04 images are now available on GitHub Actions. Add 22.04 and
drop 18.04, as we are dropping 18.04 for an upcoming release.
2022-07-13 19:05:05 +10:00
Ryan Foster e224ab37e6 CI: Update deps to obs-deps 2022-05-23 releases
macOS Updates:
 * Qt: Optimize build
 * Qt: Backport patch to fix text spacing
 * Qt: Backport patch to fix QDockWidgets docking behavior
 * NTV2: Update to v16.2-bugfix5
 * mbedTLS: Fix compile error on Xcode
 * Qt: Fix arm64 cross-compile build

Windows Updates:
 * nv-codec-headers: Update to n11.1.5.1
 * NTV2: Update to v16.2-bugfix5
 * FFmpeg: Disable Media Foundation
 * mbedTLS: Fix cross-compile build to fix encrypted SRT
2022-06-01 16:10:21 -04:00
Ryan FosterandPaul Hindt ff58d35df3 decklink-output-ui: Fix crash when stopping preview
Removing the first call to `video_output_stop` prevents the `data_mutex`
field in `struct video_output` from being destroyed while still in use.
The `render_preview_source` function will call `video_output_lock_frame`
upon that mutex and encounter a NULL pointer exception.

Co-authored-by: Paul Hindt <paulh@aja.com>
2022-05-20 21:15:53 -04:00
Ryan Foster 5a3e68a359 CI: Remove extra whitespace from Steam workflow 2022-05-19 18:50:03 -04:00
Ryan Foster b1c7d4eb4b CI: Update first-party GitHub Actions 2022-05-19 18:50:03 -04:00
Ryan Foster 6a2e2aba03 cmake: Use correct capitalization for Qt in messages 2022-05-16 20:28:01 -04:00
Ryan Foster 872c6cd58c cmake: Normalize path to QtCore_DIR
Resolve the relative path to an absolute path once and then use that for
all other Qt file paths.
2022-05-16 20:28:01 -04:00
Ryan Foster 4d741833f8 cmake: Teach CopyMSVCBins to use Qt 5 or 6
Make CopyMSVCBins.cmake work with either Qt 5 or Qt 6 depending on what
version the user has chosen.
2022-05-16 20:28:01 -04:00
Ryan Foster 75d0f44551 docs: Update speaker_layout enum values
A documentation update was missed. Bring these values up to date with
the current reality.
2022-05-16 17:15:11 -04:00
Ryan FosterandRichard Stanway dbdf82da80 UI: Fix memory leak with Manage Broadcast dialog
When OBS has been connected to a YouTube account, the Manage Broadcast
dialog becomes available. Opening and closing this dialog leaks about
2-3 MB of memory each time. This happens because the dialog is never
deleted, and a new object is created every time the dialog opens.

If we set Qt::WA_DeleteOnClose on the dialog, then the dialog->exec()
call would call delete this. However, if the dialog->Valid() call
returned false (this should currently be impossible), then exec is never
called, so it would not clean up.

To fix this, make the dialog stack-allocated instead of using new and
delete.

Detected by clang-analyzer.
2022-05-16 22:46:50 +02:00
Ryan FosterandJim 069f35a75c UI: Find Qt WinExtras only in Qt 5
WinExtras does not exist in Qt 6. Only try to find it and link against
it if using Qt 5.
2022-05-11 23:37:41 -07:00
Ryan Foster 7eb36eadb1 CI: Update macOS image to macOS 12
Update the macOS image used on GitHub Actions from macOS 11 to macOS 12.
2022-04-28 17:34:53 -04:00
Ryan Foster 4b078b9296 CI: Respect user-specified build directory
The Windows build script would respect the user-specified build
directory for the configure step, but not for the build step. Fix that
by applying the same logic in Configure-OBS to Build-OBS.
2022-04-23 20:04:20 -04:00