Commit Graph
9219 Commits
Author SHA1 Message Date
Georges Basile Stavracas Neto 2b3cb54771 libobs: Add a Wayland platform
Introduce the OBS_NIX_PLATFORM_WAYLAND enum value, and try to detect
it when OBS Studio runs by looking into the platform name.
2021-02-09 09:39:04 -03:00
Clayton Groeneveld 36ab7b97cf UI: Add ability for stingers to use filters
This adds a menu item in the transitions config menu to access
filters for stinger transitions.
2021-02-09 02:46:27 -08:00
poccariswet 77e4a09f62 rtmp-services: Add OPENREC.tv service 2021-02-08 22:36:36 -08:00
Jim 06c5d059c1 Merge pull request #4210 from fredemmott/decklink-settings-double-free
decklink-ui: fix double free of settings
2021-02-08 22:35:50 -08:00
Fred Emmott e5f05473e7 decklink-ui: fix double free of settings
This leads to a crash when the output is stopped, either by clicking the
stop button or when exiting OBS studio.

This crash is:
- intermittent in release builds
- reliable for me in debug builds

It is held by an `OBSData`, which, if not null, will automatically
call `obs_data_release()` on scope exit.
2021-02-08 14:46:38 -06:00
Jim 999d32e581 Merge pull request #1618 from Palakis/stinger-track-matte
obs-transitions: Track Matte support for Stinger Transitions
2021-02-08 01:48:30 -08:00
Andrés Barreiro c83273cc72 win-dshow: Add autorotation toggle 2021-02-07 21:12:48 -08:00
Hernán a8aadff2f5 rtmp-services: update Piczel.tv recommended 2021-02-07 11:36:10 -08:00
Stéphane Lepin 2bd0404c17 obs-transitions: skip stinger size factors if track matte is disabled 2021-02-06 17:14:10 -08:00
Stéphane Lepin 442ebce361 obs-transitions: default size factors when track matte is disabled 2021-02-06 17:14:10 -08:00
Stéphane Lepin 506434c5e6 obs-transitions: add track matte feature to the stinger transition
This adds the ability to use a secondary black-and-white video as a mask
between source A and B of the transition. The greyscale value of each
pixel is used as the "slider" value in a linear interpolation between the
corresponding pixels in source A and source B.
The track matte can either be in the same file as the stinger itself
(next to the stinger or under the stinger, doubling the width or height
of the stinger depending of the selected layout) or a in a separate
dedicated file.
The same file/separate file behavior is controlled by the
"Matte Layout" option in the stinger settings.
2021-02-06 17:14:07 -08:00
jp9000 6cf22c54dc win-waspi: Make sure to unregister notification obj
Fixes a bug where the notify object existed after source deletion
2021-02-06 10:41:19 -08:00
jp9000 74e6448195 win-wasapi: Add default audio device change detection
Probably long time coming, but when the user changes their default audio
device in Windows sound settings, OBS will now detect it and change the
audio device automatically to the new device if it was set to use the
"Default" device.
2021-02-06 00:29:54 -08:00
jpark37 951acf2dfe libobs/util: More atomic fixes
Use _ARM_BARRIER_ISH for ARM path.

Remove useless conversion in os_atomic_load_bool.
2021-02-04 17:14:46 -08:00
jpark37 3df4a1109c libobs/util: ARM atomic fixes
Use native instructions on ARM64 (dmb is slow).

Use magic number for 32-bit ARM since _ARM64_BARRIER_ISH is for ARM64.
2021-02-03 22:18:26 -08:00
Henrik "Henke37" Andersson f0ad7a92cd libobs: Include thread names in thread traces
Makes the crashlog a little nicer to read.
2021-02-03 13:08:57 -08:00
tt2468 1ea8183737 Docs: Add obs_frontend_reset_video() 2021-02-03 08:53:42 -08:00
tt2468 fa3ae6db93 Frontend-API: Add obs_frontend_reset_video() 2021-02-03 08:53:42 -08:00
jpark37 d48e77385c libobs: Update compare-exchange pattern
Use function that updates previous value automatically.

Also load initial value seq_cst to be safe.
2021-02-03 08:51:31 -08:00
jpark37 5cf40bf818 docs/sphinx: Update atomic API 2021-02-03 08:51:31 -08:00
jpark37 1f90f0e36b libobs/util: Various atomic improvements
Add exchange functions to alias the poorly named set functions.

Add store without reading previous. Faster on non-x86 processors.

Add compare-exchange that updates previous to avoid redundant fetch.

On Windows, load bool without conversion from char.

On Windows, load using mov with compiler barrier. Still seq_cst.

On POSIX, use GCC __atomic builtins.
2021-02-03 08:51:31 -08:00
Hector Martin 31a9dc384d libobs: guard against lagging audio sources
df4eb82 fixed a bug that caused source audio timestamps to perpetually
lag. However, there is a deeper issue where after we reach max
buffering, lagging sources make OBS's entire audio pipeline fall over.
These may be corrected by later code, but still cause global audio
glitches at best. Persistent problems, as prior to df4eb82, cause audio
to fail entirely.

The root cause is that OBS's audio mixing tree cannot deal with
timestamps prior to the current audio tick. Intermediate mixing stages
assume that the lowest incoming timestamp is the base of the current
tick, and mix accordingly. This propagates lagged timestamps up the
tree, where at the top level mix_audio will drop the source entirely -
which at this point is a transition covering all inputs, thus glitching
audio globally. Where extra buffering can cover the slip, the entire mix
gets retried and the error corrected, but when the global buffer
duration is maxed out, it makes it to the output.

The solution is to catch laggy sources immediately after rendering, and
drop audio to bring them back in sync, or mark them pending if not
enough audio is available. This ensures later mixing stages are not fed
with out of sync timestamps.

This improves the ignore_audio code to only drop as much audio as
needed to bring the source back in sync, and moves its call to
immediately after source audio rendering.
2021-02-02 13:28:54 -08:00
Hector Martin 3191f5ddb0 libobs: transition: ignore sources with ts=0
This is a safety against sources which somehow end up with
audio_pending=false but ts=0. Other codepaths guard against this too.
2021-02-02 13:28:54 -08:00
Doug Kelly ead1c63a18 mac-avcapture: Add additional capture presets
This adds additional capture presets, including 3840x2160 and
1920x1080, in addition to the preset "High." These are guarded with
a runtime check using the @available() keyword for macOS 10.15+.
2021-02-02 06:51:21 -08:00
jp9000 219a0913ca UI: Improve missing files text 2021-02-02 06:13:51 -08:00
Jim 40a47b3af4 Merge pull request #3047 from MaZderMind/bugfix/3040
linux-capture: Fix Problems with the Window-Selection of the XComposite Source
2021-02-01 14:18:12 -08:00
Georges Basile Stavracas Neto 9810fe9220 linux-capture: Fail to load when running on EGL
Right now, linux-capture hard-depends on GLX. Disable it when
running under EGL.
2021-02-01 19:05:11 -03:00
Georges Basile Stavracas Neto 27d0182fdb UI: Set the Unix platform on startup
Move the OBS_USE_EGL environment variable check to obs-app.cpp,
and set the OBS platform to be either OBS_NIX_PLATFORM_X11_GLX
or OBS_NIX_PLATFORM_X11_EGL.
2021-02-01 19:05:11 -03:00
Georges Basile Stavracas Neto 506b950d02 libobs: Introduce the concept of a Unix platform
This is a Unix-specific code. The only available platforms
at this point are the X11/GLX and X11/EGL platforms.

The concept of a platform display is also introduced. Again,
the only display that is set right now is the X11 display.
2021-02-01 19:05:10 -03:00
Georges Basile Stavracas Neto 510c747459 libobs/nix: Move X11-specific code to obs-nix-x11.c
Currently, obs-nix.c is highly tied to the X11 display
server. It includes X11 headers directly, and make use
of X11 functions. Most of the code inside obs-nix.c that
is X11-specific is related to hotkeys handling.

Introduce a new vtable for hotkeys callbacks, that will
used by X11 and Wayland to expose their specific routines.
In this commit, only the X11 hotkeys vtable is implemented.

Move all the X11-specific code to obs-nix-x11.c, and add
a new function to retrieve the X11 hotkeys vtable.
2021-02-01 19:03:43 -03:00
Georges Basile Stavracas Neto 586767ab12 ci: Install qtbase5-private-dev on Linux
List this dependency both under CI/install-dependencies-linux.sh, and
.github/workflows/main.yml.
2021-02-01 19:03:43 -03:00
Georges Basile Stavracas Neto 59744e95c3 deps/glad: Make X11 required as well
To keep consistency with the EGL line
2021-02-01 19:03:14 -03:00
Georges Basile Stavracas Neto 2fd8a6df55 libobs-opengl: Introduce the X11/EGL winsys
Introduce the EGL/X11 winsys, and use it when the OBS_USE_EGL environment
variable is defined. This variable is only temporary, for future commits
will add a proper concept of platform.

All the EGL/X11 code is authored by Ivan Avdeev <me@w23.ru>.
2021-02-01 19:03:14 -03:00
Georges Basile Stavracas Neto 647415ec4f libobs-opengl: Factor out GLX winsys
Move the GLX-related code to gl-x11-glx, and introduce gl-nix as
a winsys-agnostic abstraction layer. gl-nix serves as the runtime
selector of which winsys going to be used. Only the X11/GLX winsys
is available now, but later commits will introduce the X11/EGL
winsys as well.

The gl-nix code was originally written by Jason Francis <cycl0ps@tuta.io>
2021-02-01 19:03:14 -03:00
Georges Basile Stavracas Neto 83ae6f6f43 libobs-opengl: Rename gl-x11.c to gl-x11-glx.c
This is in preparation for the future abstraction layer (gl-x11-*)
and also to match the actual name of the windowing system. When
running under X11, we can glue OpenGL through GLX or EGL, so the
new file name matches that now.
2021-02-01 19:03:14 -03:00
Georges Basile Stavracas Neto 7801b3301a deps-glad: Add EGL
The code is generated by https://glad.dav1d.de/
2021-02-01 19:03:14 -03:00
Lordmau5 5b899788da UI: Add launch parameter to disable high-DPI scaling 2021-02-01 05:44:37 -08:00
Thulinma 244b6c92e6 obs-outputs: Fix RTMP restart not always working
Bug is caused by the internal connection variables not being reset on
reconnect, leading OBS to both be unable to parse valid packets from and
send valid packets to the remote end.  This commit splits RTMP_Init off
into a new RTMP_Reset function, which resets these internal variables
without re-initing the rest of the library.  The original RTMP_Init
calls the new function, perfectly preserving the old behaviour while
adding a new reset function to address the issue with.

Fixes obsproject/obs-studio#2865
2021-01-31 18:44:11 -08:00
Jim 2eca4d80b6 Merge pull request #2233 from VodBox/missing-files-dialog
libobs + UI: Add Missing Files API & Dialog
2021-01-31 08:02:16 -08:00
Jim 1c99cad33d Merge pull request #4140 from jpark37/wgc-monitor
Add display capture via Windows Graphics Capture
2021-01-31 07:10:57 -08:00
Jim 9eb32eed18 Merge pull request #4162 from jpark37/warnings-20210129
Another warning clean-up pass
2021-01-30 11:37:43 -08:00
jpark37 3d4e8c377c UI: Fix unused parameter 2021-01-30 00:25:25 -08:00
jpark37 48ba511bda UI: Avoid asprintf warning 2021-01-30 00:25:25 -08:00
jpark37 2c1610017d linux-v4l2: Fix ignored return value 2021-01-30 00:25:25 -08:00
jpark37 54047ef9ca libobs: Avoid strncpy warning 2021-01-30 00:24:16 -08:00
jpark37 5753c25cba libcaption: Fix static keyword placement 2021-01-29 23:59:23 -08:00
jpark37 033a29ef9a rtmp-services: Fix unused parameter 2021-01-29 21:50:51 -08:00
jpark37 0e803c4443 obs-filters: Fix unused parameters 2021-01-29 21:50:32 -08:00
jpark37 dd62bd05fb libobs-opengl: Fix unused parameters 2021-01-29 21:50:19 -08:00
jpark37 98d1f340da libobs: Fix unused parameter 2021-01-29 21:50:06 -08:00