Commit Graph
3226 Commits
Author SHA1 Message Date
Paul Hindt cb51c974f4 aja: Fix Kona5/io4K+ 6G/12G-SDI routing and RGB HD-DualLink routing 2022-01-13 13:12:47 -06:00
Paul Hindt 8f8b522ca7 aja: Fix for invalid default settings and empty cardID string 2022-01-13 13:11:51 -06:00
Matt Gajownik cdb5b6e812 obs-vst: Fix crashes due to unhandled events, fix stutter when loading
* 106868e - Improve lock for effect object
* 566c213 - Handle more VST events to avoid crashes
2022-01-13 19:09:29 +11:00
Vainock 4e8fbb8f77 obs-ffmpeg: Fix spelling mistake for 'Encoder.Timeout' 2022-01-12 07:33:04 -08:00
gxalpha 723d5a2163 obs-ffmpeg: Add missing "FFmpegOpts" locale 2022-01-12 21:48:38 +11:00
Paul Hindt 1cbf9421d4 aja-output-ui: Add the Multi View UI options for new device. 2022-01-11 17:28:05 -06:00
tytan652 9d02ca0fef aja: Fix format-security warning
On some Linux distributions -Werror=format-security is set when
building package keeping OBS Studio from being built with AJA
plugins.
2022-01-11 20:40:03 +11:00
Matt Gajownik 046d98d871 obs-vst: Fix crashes when switching VSTs, and large channel counts
* 0f6470c - Fix crash with plugins using large channel count
* 9cdde97 - obs-vst: Check hash before applying "chunk_data"
2022-01-11 10:41:57 +11:00
Matt Gajownik 1989391bfc obs-browser: Update version to 2.17.6
* 26dc85e - Add obs-websocket 5.0.0 integration
2022-01-11 10:40:26 +11:00
Matt Gajownik 3900ae0974 libdshowcapture: Add P010 support 2022-01-11 10:40:01 +11:00
Paul Hindt f09137a2e0 aja: Refactor, clean-up and fix bugs in the signal routing system, and add SDITransport UI option to assist signal routing. 2022-01-08 14:05:10 -06:00
pkv d78971b4db obs-ffmpeg: Further FFmpeg deprecations fixes for FFmpeg 4.4+
avcodec.h stopped including channel_layout.h per FFmpeg commit
1be3d8a0cb77 [1]. Fixes compilation error on macOS against
FFmpeg later than the mentioned commit.
[1] https://github.com/FFmpeg/FFmpeg/commit/1be3d8a0cb77f8d34c1f39b47bf5328fe10c82d7
2022-01-08 18:18:27 +11:00
Tatsuyuki Ishi b684e01aad linux-capture: Disable strict binding for NVIDIA drivers
NVIDIA drivers appears to have a bug where binding would be excessively
slow. Apply a workaround similar to what [KWin] does to prevent the issue.

Also performs a refactor so that the code paths with and without the
workaround can be shared.

[KWin]: https://github.com/KDE/kwin/blob/4f2c3a00c4a86c08321e80d601fecd09d0871c79/src/libkwineffects/kwinglplatform.cpp

Fixes: 316f858c6 ("linux-capture: Fix capturing on software rasterization setups")
Closes: https://github.com/obsproject/obs-studio/issues/5685

Tested-By: univrsal <uni@vrsal.xyz>
2022-01-07 15:21:09 -08:00
Matt Gajownik 5defdaf1db obs-vst: Fix resizing, always use source name in window title
425935a - Fix VST plug-ins disappearing when resized
2e90d23 - Correctly use source name (not target) for window title
2022-01-07 23:48:06 +11:00
jp9000 dfaccd1e3a obs-ffmpeg: Fix av1 encoding with fractional framerates
Just use util_mul_div64 instead of using av_rescale_q_rnd
2022-01-04 22:48:10 -08:00
Matt Gajownik da5fc10a8b obs-browser: Update version to 2.17.5
* Get and log Chromium build version
* Fix debug builds for CEF >= 4430 on Windows
* Fix unused-parameter warning
2022-01-04 22:46:23 +11:00
Georges Basile Stavracas Neto a200001d2a linux-capture: Standardize gs_color_format variable names
Name them all to 'gs_format'. We need to be a bit strict with
naming here, since we're dealing with 3 format namespaces (OBS,
PipeWire, and DRM).
2021-12-30 18:41:04 -03:00
Georges Basile Stavracas Neto 64bb5a0974 linux-capture: Unify format lookups
Merge all format lookup functions into a single one, with all
out parameters optional.
2021-12-30 18:41:04 -03:00
Georges Basile Stavracas Neto f0026142f0 linux-capture: Move supported formats into a static table
We've been listing the supported formats in place whenever we
needed so far, but now we're doing it in too many different
places, which is getting confusing.

Move all these sparsely written rules into one single table
of formats, and adjust the code to lookup data on it.
2021-12-30 18:41:04 -03:00
Georges Basile Stavracas Neto d876e735e0 linux-capture: Split array into two variables
Split the 'f' array in two named variables, and move one of
these variables to the appropriate context where its used.

No functional changes.
2021-12-30 18:41:04 -03:00
Georges Basile Stavracas Neto 52a3a8817d linux-capture: Add preferred value out of the loop
Choice pods are built with the first element being the
preferred choice, followed by a list of possible choices.

We add the preferred choice inside the loop, which makes
the code slightly harder to follow.

Factor this out of the loop, into a separate step.
2021-12-30 18:41:04 -03:00
Georges Basile Stavracas Neto 37ba341d3a linux-capture: Rename a variable
'modifierless' is a bit non-descriptive given the lack of a
verb in the variable name. Rename it to 'use_modifiers', and
swap the logic.
2021-12-30 18:41:04 -03:00
Matt Gajownik 7c50621e15 obs-browser: Update version to 2.17.4 2021-12-29 16:55:23 +11:00
Richard Stanway af6844f5c2 obs-outputs: Only log SO_SNDBUF on RTMP socket
From Windows 7 onwards, dynamic send buffering is enabled. By setting
SO_SNDBUF explicitly, we actually disabled the dynamic send buffering
feature which results in reduced throughput. Thankfully this did not
affect the majority of users since the default send buffer is usually
already 64k.

This commit replaces the setting of SO_SNDBUF with log output showing
the current value of SO_SNDBUF at stream start and end. This will aid in
debugging throughput issues caused by a buffer that isn't big enough,
perhaps as a result of the user disabling dynamic send buffering
system-wide.
2021-12-27 14:29:43 -08:00
jp9000 006fdd2be5 Revert "obs-filters: Remove duplicate color correction code"
This reverts commit 6940495e79.
2021-12-25 17:10:44 -08:00
jp9000 c16f27d269 Revert "obs-filters: Remove duplicate code from color key filter"
This reverts commit a4045ed31a.
2021-12-25 17:10:43 -08:00
jp9000 f4317888de Revert "obs-filters: Remove duplicate code from chroma key filter"
This reverts commit 311330628d.
2021-12-25 17:10:41 -08:00
Matt Gajownik babc07fa5c obs-browser: Include atomic for browser source destroy
Fixes build issues on older CEF versions (especially on Linux)
2021-12-25 08:52:20 +11:00
jp9000 8629d6a028 obs-vst: Fix race condition and prevent double invoke
1dde4c37a obs-vst: Fix VSTPlugin::effect race condition
e33e8ee62 obs-vst: Modify VSTPlugin::closeEditor()
2021-12-23 10:58:44 -08:00
Norihiro Kamae 685f8297e4 obs-ffmpeg: Set frame_size for audio codec parameter
This commit fixes an issue that the last audio packet is sometimes not
written into mp4 format. Since libavformat internally calculates the
packet duration from the frame_size specified in the codec parameter, it
is necessary to set frame_size.
2021-12-23 10:48:37 -08:00
Matt Gajownik e695bf674e obs-browser: Correct set function names to match README 2021-12-23 18:16:14 +11:00
columbarius 0532a5c1f0 linux-capture: Fix Ubuntu 21.10 builds
Ubuntu 21.10 provides PipeWire 0.3.32 which is missing the
`SPA_POD_PROP_FLAG_DONT_FIXATE` required for proper DMA-BUF negotiation.
Since this isn't implemented in the DE's of this Ubuntu version just
defining this flag won't have any impact.

Revert after support for Ubuntu 21.10 ended.
2021-12-22 14:27:53 -03:00
columbarius 13693bd199 linux-capture: Add fallback for PipeWire < 0.3.40
Proper DMA-BUF format and modifier negotiation is possible with PipeWire
0.3.40. This commit adds checks for older versions and allows to build
against them.

These are classified as follows:
* PipeWire server older than 0.3.24: Restrict to SHM only
* PipeWire server between 0.3.24 (incl.) and 0.3.40: Announce modifiers
  along with the old method. On failed import drop all modifiers.
* PipeWire server 0.3.40 and newer: Announce modifiers along with the
  old method. On failed import drop only a single modifier.
2021-12-22 14:27:53 -03:00
columbarius abbec90e7e linux-pipewire: Handle DMA-BUF import failure
Importing a DMA-BUF can fail even if the renderer announces support for
the used format modifier pair. This can be caused by a number of reasons
specific to the underlying hardware and api [1]. In that case we want to
remove that modifier from our list of supported ones and renegotiate.

This feature was added in PipeWire 0.3.40. On previous versions the best
we can do is drop all modifiers an fallback to DMA-BUF with another
format or directly to the SHM buffer transport. This mechanism is
demonstrated in [2].

[1] https://xdc2020.x.org/event/9/contributions/615/attachments/704/1301/XDC_2020__Allocation_Constraints.pdf
[2] https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/src/examples/video-play-fixate.c
2021-12-22 14:27:53 -03:00
columbarius c31aba9600 linux-capture: Announce supported modifiers via PipeWire
Sharing DMA-BUFs via PipeWire requires the client to announce all
formats together with their supported modifiers. [1]

[1] https://docs.pipewire.org/page_dma_buf.html
2021-12-22 14:27:53 -03:00
columbarius b57f7f0aed linux-capture: Bump minimal PipeWire version to 0.3.33
We require PipeWire 0.3.33 or later to make use of the introduces flags
`SPA_POD_PROP_FLAG_MANDATORY`  and `SPA_POD_PROP_FLAG_DONT_FIXATE`,
which are required for the negotiation process introduced in the
following commits.
2021-12-22 14:27:53 -03:00
Georges Basile Stavracas Neto e41e845272 linux-pipewire: Use DRM fourcc defines directly
It was naive to add these defines here to avoid a direct include when
the entire platform already depends on the DRM subsystem. Just include
it and let it provide the image formats.
2021-12-22 14:27:53 -03:00
jp9000 a593fe6755 obs-outputs: Add support for "RTMP Go Away" feature 2021-12-21 09:44:21 -08:00
jp9000 b4fb1db460 obs-outputs/librtmp: Add custom connect data callback
Allows the ability to add custom connect data to the connect signal
encoding
2021-12-21 09:44:21 -08:00
jp9000 6a72cd64e7 obs-outputs: Add support for reading RTMP packets
Instead of ignoring RTMP packets, allow the ability to read incoming
RTMP packets
2021-12-21 09:44:21 -08:00
jp9000 1604a8d362 obs-browser: Do not wait for browser on source destroy
On source destroy, the browser source should not wait for other threads
if it's avoidable, as this could cause hard locks. Instead, mark the
source for destruction, destroy any obs/graphics data, and let the CEF
queue delete the what's left of the pointer at its leisure.

Fixes a hard lock on macs due to the browser source destructor having to
wait for the UI thread (due to USE_QT_LOOP), which may already have been
waiting for the source.
2021-12-21 01:33:18 -08:00
jp9000 51050b3075 Revert "mac-capture: Improve window capture performance"
This reverts commit 257715d31f.

Was merged prematurely by mistake (clicked the merge button on the wrong
tab).
2021-12-20 14:02:58 -08:00
Dossy Shiobara 257715d31f mac-capture: Improve window capture performance 2021-12-20 09:05:36 -08:00
Matt Gajownik 96ee97e997 obs-vst: Avoid using empty editorWidget for deleteLater() 2021-12-19 10:55:59 +11:00
hellowanda a01a01f752 win-virtualcam: Make sure virtualcam output thread safe 2021-12-18 07:14:47 -08:00
liu.haibin 1883b774e8 obs-outputs: Reset dbr bitrate before end_data_capture_thread start 2021-12-17 04:31:16 -08:00
Jim 91a9688d9f Merge pull request #5501 from RytoEX/fix-ffmpeg-deprecations
Fix FFmpeg deprecations up to FFmpeg 4.4 and current FFmpeg git
2021-12-17 01:16:35 -08:00
Translation Updater 062de2c998 Update translations from Crowdin 2021-12-17 08:01:29 +00:00
wangshaohui 81d70b5d1b win-capture: Should not init module if HWND is invisible 2021-12-16 23:39:55 -08:00
jp9000 1f20e0ca93 obs-browser: Fix deadlock 2021-12-14 10:34:53 -08:00