2913 Commits

Author SHA1 Message Date
Kurt Kartaltepe
1064cd26f1 obs-ffmpeg: Expose psycho-aq setting
This was changed to default on but is not exposed for ffmpeg nvenc.
Where cards without temporal AQ support will fail to initialize and we
cannot do checks beforehand. This exposes the parameter to allow users
to disable this feature when using the ffmpeg implementation.
2021-04-10 14:49:40 -07:00
Mat Clayton
99a2c221c4 rtmp-services: Update Mixcloud 2021-04-10 10:27:47 -07:00
tytan652
e93632c58b obs-browser: Emit fatal error if CEF or X11 is missing
CMake will now emit a fatal error if CEF or X11
is not found rather than disabling obs-browser
2021-04-09 06:55:25 -07:00
jpark37
54656af340 obs-filters: Add color settings to correction v2
Restore color tint/overlay functionality, but with separate controls for
tinting (multiply) and overlay (add).
2021-04-09 06:45:13 -07:00
tytan652
66d79a926a linux-capture: Ask for PipeWire if deps not found
CMake will now emit a fatal error if PipeWire or Gio are not present.
2021-04-09 06:44:53 -07:00
tytan652
029aee33c3 plugins: Set obs-vst as a default requirement
BUILD_VST option is added and set to ON by default.
If obs-vst is not present CMake will emit a fatal error.
2021-04-09 06:44:53 -07:00
tytan652
98ad4face2 plugins: Set obs-browser as a default requirement
BUILD_BROWSER is set to ON by default.
If obs-browser is not present CMake will emit a fatal error.
2021-04-09 06:44:53 -07:00
jp9000
c7aaceaee6 obs-browser: Disable browser panels on Wayland for now
When running on Wayland, the browser docks look broken and sometimes
they crash OBS Studio. Interestingly, browser sources seem to work
just fine. Ideally we'd be able to dig into the issue and find the
root cause, but time is short for the 27 release and disabling the
docks until this is figured out seems to be the best alternative for
now.

Of course this is a temporary workaround, and eventually this commit
will be reverted, and browser docks will work just fine, flowers and
rainbows and happy unicorns.

Disable browser docks on Wayland, which includes both the manually
added docks, and the docks OBS Studio creates for authentication for
Twitch and Restream.io.

Related: obsproject/obs-browser#279
         obsproject/obs-studio#4436
2021-04-08 15:46:41 -07:00
jp9000
a79b6d6f79 win-dshow: Fix libdshowcapture formatting 2021-04-06 12:00:12 -07:00
pkv
38d17acdbb obs-filters: Code cleanup for RTX denoiser
This minor code cleanup commit does the following:
- sets defaults intensity of RTX denoiser to max.
- adds an initialization check of nvafx.
- splits nvafx initialization from channel allocation for better
readibility of the code.
- moves the intensity update from the filter_audio process function
to the plugin update function.
- logs the error code in case nvafx returns an error when running.
(useful for devs; I haven't translated the error codes which are
available in the sdk).
2021-04-05 03:11:51 -07:00
pkv
b46e9bba85 obs-filters: Fix initialization of RTX denoiser
This fixes issue #4441.
The issue occurs when adding the noise suppression filter for the
first time. Rnnoise or speex are the default noise suppression
methods. Line 344 returns which prevents initialization and
allocation for nvafx (rtx denoiser).
With the fix, initialization of nvafx occurs when swapping methods.
2021-04-05 03:11:51 -07:00
Georges Basile Stavracas Neto
84b4257276 linux-capture: De-escalate assertion to a warning
The assertion exposed a bug in the KDE implementation of the Desktop
portal. However, it comes with the side effect of exiting OBS Studio
in this case, where we can actually make it work (even if buggy).

De-escalate the assertion to a warning, and then attempt to find the
correct stream to use.
2021-04-05 03:11:30 -07:00
jp9000
b479d60917 win-dshow/libdshowcapture: Update to 0.8.7 2021-04-04 01:37:29 -07:00
jpark37
593835c227 obs-filters: Perform chroma key in nonlinear space
Don't want to deal with regressions from using linear space right now.
2021-04-04 00:58:38 -07:00
jpark37
185df01a96 obs-filters: Use new pattern for SRGB support 2021-04-04 00:58:38 -07:00
jp9000
856dbfd89c obs-browser: Update version to 2.14.1 2021-04-02 00:14:57 -07:00
jp9000
416a55cccb rtmp-services: Update package counter
Need to do this because the file needs updating on the server but a
certain service has to be excluded because code to actually use it isn't
in any version before 27.
2021-04-01 06:13:38 -07:00
derrod
4ff3d6b300 rtmp-services: Include format version in update URL 2021-04-01 02:47:44 +02:00
jpark37
cacc65f978 obs-transitions: Add narrowing casts 2021-03-31 06:07:11 -07:00
Richard Stanway
c5f06a2837 win-dshow: Fix crashing when using a custom vcam placeholder
The scaler assumed the placeholder was the same size as the camera which
caused crashes if the user replaced the placeholder with a smaller
resolution image (or if the camera was potentially running at > 1080p).
This adds a separate scaler for the placeholder and uses the resolution
of the virtual camera instead of defaulting to 1080p.
2021-03-31 02:36:16 -07:00
jpark37
2472529520 win-capture: Restore GL capture deduplication
Previous fix attempted to place swap_recurse count in gl_data struct,
where it could be unexpectedly memset to 0. Separate member from struct,
and make thread-local for additional safety.
2021-03-31 02:35:22 -07:00
wangshaohui
0069562cca win-capture: Fix window capture stuck last frame
Fixes obsproject/obs-studio#2321
2021-03-30 05:49:43 -07:00
floele
44c38e71cc obs-ffmpeg/ffmpeg-mux: Fix hang without global_stream_key
If DEBUG_FFMPEG_MUX is enabled, when starting a recording without
configuring global_stream_key, obs-ffmpeg-mux will hang. Apply same
check to global_stream_key as in init_params() to prevent this.
2021-03-30 04:55:33 -07:00
Eric Lindvall
3c76fc4ddb obs-ffmpeg: Enable macOS hardware decoding for media source
Reverts  c7395b05ece4b9e204aa90984c8e29bd3eb739d9
2021-03-30 03:45:06 -07:00
jpark37
abf6a97ca9 obs-x264: Set CRF value conditionally
Matches value seen when encoding with FFmpeg.
2021-03-30 03:17:38 -07:00
jpark37
dd552df15c obs-x264: Set sample aspect ratio to 1:1
Matches values seen when encoding with FFmpeg.
2021-03-30 03:17:38 -07:00
jpark37
a52562a98e obs-x264: Set timebase
Matches values seen when encoding with FFmpeg.
2021-03-30 03:17:38 -07:00
Jim
e92c1fe6bc
Merge pull request #4287 from GeorgesStavracas/gbsneto/pipewire
Wayland / PipeWire capture
2021-03-30 03:16:46 -07:00
Jim
5d87f3c00b
Merge pull request #3426 from Programatic/undo_redo
UI: Implement Undo/Redo System
2021-03-30 03:16:24 -07:00
Georges Basile Stavracas Neto
10a1a708fb linux-capture: Return different descriptions for different captures
Use the current description for X11 / GLX, and a new description for all
PipeWire-based captures (EGL/X11 and EGL/Wayland)
2021-03-29 17:00:31 -03:00
Georges Basile Stavracas Neto
c2f8b2058b linux-capture: Add PipeWire-based capture
Add a new Linux capture based on PipeWire [1] and the Desktop portal [2].

This new capture starts by asking the Desktop portal for a screencapture session.
There are quite a few D-Bus calls involved in this, but the key points are:

 1. A connection to org.freedesktop.portal.ScreenCast is estabilished, and the
    available cursor modes are updated.

 2. CreateSession() is called. This is the first step of the negotiation.

 3. SelectSources() is called. This is when a system dialog pops up asking the
    user to either select a monitor (desktop capture) or a window (window capture).

 4. Start() is called. This signals the compositor that it can setup a PipeWire
    stream, and start sending buffers.

The reply to this fourth call gives OBS Studio the PipeWire fd, and the id of the
PipeWire node where the buffers are being sent to. This allows creating a consumer
PipeWire stream, and receive the buffers.

Metadata cursor is always preferred, but on the lack of it, we ask the stream for
an embedded cursor (i.e. the cursor is drawn at the buffer, and OBS Studio has no
control over it.)

Window capturing is implemented as a crop operation on the buffer. Compositors
can send big buffers, and a crop rectangle, and this is used to paint a subregion
of the buffer in the scene.

The new capture is only loaded when running on EGL, since it depends on EGL to
call gs_texture_create_from_dmabuf().

[1] https://pipewire.org/
[2] https://github.com/flatpak/xdg-desktop-portal/
2021-03-29 17:00:31 -03:00
Georges Basile Stavracas Neto
a0464b0f8f linux-capture: Shuffle around CMake code
In preparation for the introduction of the new PipeWire-based capture,
use variables for include_directories() and target_link_libraries(),
and move them to the bottom of the file.
2021-03-29 17:00:31 -03:00
Matt Gajownik
662648bd98 obs-browser: Update version to 2.14.1
Fixes building on Ubuntu 18.04.
2021-03-23 21:51:30 +11:00
jp9000
ad628eb2e0 obs-browser: Update version to 2.14.0 2021-03-22 22:59:04 -07:00
Richard Stanway
6424901120 win-dshow: Check return value of ReadFile 2021-03-23 03:15:07 +01:00
Richard Stanway
45643adb03 win-dshow: Check return values for memory allocation functions
Since some of these run inside the virtual cam module, we should be a
good guest and not crash the host process if we run out of memory.
2021-03-23 03:07:22 +01:00
Richard Stanway
670156db8b win-dshow: Fix incorrect variable used in condition 2021-03-23 02:49:44 +01:00
Richard Stanway
5c8587eab3 win-dshow: Don't call DisableThreadLibraryCalls in virtualcam
Per MSDN: Do not call this function from a DLL that is linked to the static C
run-time library (CRT). The static CRT requires DLL_THREAD_ATTACH and
DLL_THREAD_DETATCH notifications to function properly.
2021-03-23 02:49:44 +01:00
wangshaohui
f316762a2a win-dshow: Fix memory leak caused by using incorrect API 2021-03-22 13:59:22 -07:00
Ford Smith
7fc539c3c4 text-freetype2: Updated defaults
Adds several more settings to the defaults for the text objects.
2021-03-22 15:45:00 -04:00
jp9000
535e7dfa15 obs-vst: Update to latest version 2021-03-22 12:42:54 -07:00
Faeez Kadiri
85334d562f rtmp-services: Add Dacast 2021-03-21 22:44:02 -07:00
jp9000
6afb6d9c9f rtmp-services: Move service-specific files
Cleans up the directory a bit
2021-03-21 02:46:01 -07:00
jpark37
10c43f19c0 obs-ffmpeg: Missing NVENC bounds check 2021-03-20 12:35:49 -07:00
jpark37
4404422082 obs-ffmpeg: Replace cast with numeric literal 2021-03-20 12:35:49 -07:00
Jim
011adc4e29
Merge pull request #4344 from jpark37/nvenc-ffmpeg-alignment
obs-ffmpeg: Align both NVENC implementations
2021-03-16 22:12:36 -07:00
jpark37
7b983f00e3 obs-ffmpeg: Static analysis warnings
Fix various warnings about variable size.
2021-03-16 20:03:45 -07:00
jpark37
f35e37a963 obs-ffmpeg: Use NVENC preset lookahead length
If the preset specifies the lookahead length, use it. Force to previous
setting of 8 otherwise.
2021-03-16 20:03:45 -07:00
jpark37
6826285921 obs-ffmpeg: Align NVENC config values
Hard-code various config values as they appear in FFmpeg.
2021-03-16 20:03:29 -07:00
jpark37
3ddab3ca3e obs-ffmpeg: Align NVENC buffer length
Compute buffer count according to FFmpeg logic.
2021-03-16 20:02:49 -07:00