3539 Commits

Author SHA1 Message Date
Richard Stanway
d458780f02
win-capture: Use stack buffer for small window titles
Avoids expensive malloc calls that might also contribute to excessive
heap fragmentation.
2022-01-18 01:58:45 +01:00
Richard Stanway
ecf8c1239d
win-capture: Make open_process_proc static
Seems like the original intention and avoids repeatedly calling
GetProcAddress. Detected by PVS Studio.
2022-01-18 00:00:10 +01:00
Richard Stanway
1af1a432e2 text-freetype2: Fix incorrect fread argument order
This fixes UTF-16 BOM files being loaded incorrectly and having their
newlines parsed incorrectly in read from end mode. Detected by PVS
Studio.
2022-01-17 23:40:48 +01:00
Paul Hindt
9728345bf4 aja: Fix signal routing for 4xSDI UHD/4K RGB 3Gb
Crosspoint indices were wrong for the UHD4K_ST425_Quad_3Gb_Squares_RGB_Capture preset and VPID was not being set for the selected 3G-Level B transport mode.
2022-01-15 15:30:58 -06:00
Paul Hindt
9c9efcd04d aja: Fix erroneous HDMI input selection for certain cards 2022-01-15 15:29:39 -06:00
Paul Hindt
3e07c29ec3 aja: Rename IOSelection strings for HDMI and Analog 2022-01-15 15:29:39 -06:00
Paul Hindt
87ce26cfca aja: Fix Kona1 not auto-detecting capture pixel format 2022-01-15 15:28:16 -06:00
Ryan Foster
a7d3df3763 linux-v4l2: Fix timeout logging
The timeout_usec variable is uint64_t, but the log format was set to %ld
(signed long int), so it would sometimes log a nonsensical value. Let's
use $PRIu64 instead, which should be equivalent to %llu (unsigned long
long int).

Fixes #5797.
2022-01-14 20:43:25 -08:00
Richard Stanway
42fc705333 obs-filters: Fix incorrect format string
Detected by PVS Studio.
2022-01-15 00:17:02 +01:00
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] 1be3d8a0cb
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]: 4f2c3a00c4/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 6940495e79d6313f61e9c73a0bb75b078810f118.
2021-12-25 17:10:44 -08:00
jp9000
c16f27d269 Revert "obs-filters: Remove duplicate code from color key filter"
This reverts commit a4045ed31aee67649e71d10e2793b39677ce2c04.
2021-12-25 17:10:43 -08:00
jp9000
f4317888de Revert "obs-filters: Remove duplicate code from chroma key filter"
This reverts commit 311330628d2eb197b5bff88c05bedcc21a47ca55.
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
Norihiro Kamae
61c0a76fc0 obs-ffmpeg: Split file by PTS instead of DTS
If B-frame is enabled in video encoder, video packets have different PTS
and DTS, however audio packets do not. That caused audio packets at the
splitting point goes to a different file and audio glitch appeared in an
NLE.
2021-12-24 16:04:15 +09:00
Norihiro Kamae
550b1331ac obs-ffmpeg, UI: Reset timestamps at splitting file
This commit adds a setting to reset timestamps when splitting files.
Some NLEs cannot handle video files whose starting timestamp is not
zero. Default is enabed.
2021-12-24 15:59:26 +09:00
Norihiro Kamae
ce92f441b5 obs-ffmpeg: Split ffmpeg_muxer output file by size or time
This commit adds 3 new properties to split output file in the output
`ffmpeg_muxer`.
- `max_time_sec` specifies the limit in seconds.
- `max_size_mb` specifies the limit in megabytes.
- `allow_overwrite` specifies to test an existing file.
If both `max_time_sec` and `max_size_mb` are not positive, the split
file feature won't be enabled.
Another output ffmpeg_mpegts_muxer shares the code but is not affected
since the output is used only for streaming.
2021-12-24 15:21:55 +09:00
Norihiro Kamae
d64adb6784 obs-ffmpeg: separate generate_filename function 2021-12-24 11:49:27 +09: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