Commit Graph

2097 Commits (979054cc8c8f3d080618c99f20b807c7cf4233e6)

Author SHA1 Message Date
Richard Stanway d0cbc83da2 libobs: Avoid unnecessary mallocs in audio processing 2021-01-02 14:53:19 +01:00
Michael R. Crusoe 1e96573328 libobs: Update to SIMDe 0.7.1
c3d7abfaba

Simplify usage of the SIMDe header

This obviates the need for sse2neon as well and fixes compilation of all
plugins that referenced sse-intrin.h on all architectures, not just
arm*.
2021-01-02 04:07:55 -08:00
Clayton Groeneveld fdd34c35fc libobs: Set lock state when duplicating scene item
Fixes bug where the lock state wouldn't be copied when duplicating
a scene.
2020-12-31 13:26:39 -08:00
pkubaj d46e8b03c9 libobs: Add definitions in ARCH_SIMD_DEFINES
This is necessary on ppc64 to build plugins that use cmake, so that
-DNO_WARN_X86_INTRINSICS is defined.
2020-12-31 06:31:25 -08:00
Richard Stanway e5c6839904 libobs, obs-ffmpeg: Use correct value for EINVAL error check
FFmpeg functions such as av_interleaved_write_frame return negative
on error, so all errno values are negated.
2020-12-21 18:37:49 +01:00
Hector Martin a5d08e347e linux-pulseaudio: fix race conditions
PulseAudio code needs to be called with the PA lock held. This chiefly
fixes multiple races during stream shutdown:

* If the functions are called without the lock held, deferred event
  handling races end up with PA infinite looping on the mainloop, or
  asserting, or other badness, as the reentrant calls cause data
  structure corruption on the PA side.
* If we don't reset our callbacks, PA might call us even after we
  request stream disconnection (since the stream actually getting fully
  shut down is asynchronous), and then we dereference NULL pointers from
  our userdata etc. PA will keep its data structures alive until necessary
  via reference counting, but not ours.

The lock around pa_stream_begin_write doesn't result from any issues I
experienced, but it looks correct; PA doesn't say anywhere that that
function is thread-safe.
2020-12-12 12:05:12 -08:00
Hector Martin df4eb8219c libobs: fix the pending stop trick
Regression introduced by dc4e20500: while the stop detection is pending,
it should still return false so the rest of the discard code can run.
Otherwise, the source audio will remain in the buffer, lagging the
source and triggering audio buffering increases until max audio
buffering is reached.
2020-12-10 03:15:13 -08:00
jp9000 3c6b356208 libobs: Update version to 26.1.0 2020-12-09 02:34:15 -08:00
Richard Stanway e00feef7ab libobs: Ignore non-fatal ffmpeg return values during remux
Similar to 315fbd6 and 6071098, ignore non-fatal errors during the
remux process. It's possible OBS itself writes a file that generates
these errors when remuxed.
2020-12-02 21:05:43 +01:00
jpark37 2d547cf669 libobs: Allow wrapping D3D11 object with gs_texture_t
This can be useful for reading from textures provided by middleware.
2020-11-24 14:39:56 -08:00
PatTheMav fb27900e94 CI: Remove explicit LANGUAGE flags for cmake 3.19+ 2020-11-21 12:00:52 -08:00
Vadim Zhukov 0d222b6b56 Add OpenBSD support 2020-11-14 11:55:22 -08:00
jp9000 ebbe8d1bf9 libobs: Change service max res. to res. list
(This commit also modifies rtmp-services and UI)

Changes the maximum resolution size to a resolution list, and splits the
maximum FPS to its own function.

(Note: ABI has not been modified because the last changes still haven't
been released yet, so it's safe to modify this as long as the changes
haven't been officially released)
2020-11-13 18:22:53 -08:00
jp9000 fb7747c56e libobs: Implement obs_service func to get max bitrates
(This commit also modifies rtmp-services)

Implements obs_service_get_max_bitrate, which allows retrieving the
maximum audio/video bitrates directly rather than being forced to use
the apply method. Makes it a bit easier to get the bitrate values.
2020-11-11 09:42:26 -08:00
jpark37 86ecaadffb libobs: Fix bad type and size mismatch 2020-11-04 04:45:07 -08:00
Colin Edwards 5b8f89d86e decklink: Clean up warnings introduced by caption code 2020-11-03 17:00:14 -08:00
Colin Edwards 7b0d7c6357 Remove BUILD_CAPTIONS build flag 2020-11-02 22:46:55 -06:00
Colin Edwards 923f06bfa6 decklink: Add ability to ingest/embed cea 708 captions
(This commit also modifies libobs, UI)
2020-11-01 22:28:49 -08:00
Florian Zwoch 0c39fd08c7 libobs: Add desktop session type to Linux log
Add the content of the XDG_SESSION_TYPE environment variable to
the output log if it is set. This is usually set on modern Linux
distributions and typically carry either "x11" or "wayland" when
run from a desktop environment.

This is independent from the QT_QPA_PLATFORM environment variable
which would allow OBS Studio to run inside a wayland session. The
session type it runs on does have an implication on the behavior of
some plugins like screen and window capture. So having this
information exposed here is extremely helpful for diagnosing
issues.
2020-10-30 02:19:21 -07:00
jp9000 e4c6b59852 libobs: Add ability to get max cx/cy/fps from service
This obs_service_t object callback was implemented specifically for
services which may have a maximum recommended width, height, and
framerate that needs to be enforced.
2020-10-30 00:28:44 -07:00
Matt Gajownik a86d4c073d libobs: Return default obj and array rather than current
Fixes #3357
2020-10-23 22:32:20 -07:00
Clayton Groeneveld 2b50263d5c UI, libobs: Add ability to copy/paste single filter 2020-10-15 10:14:22 -07:00
jp9000 18486853a5 obs-ffmpeg: Add ability to debug ffmpeg-mux subprocess
Adds a cmake variable (DEBUG_FFMPEG_MUX) which enables FFmpeg debug
output in the ffmpeg-mux subprocess, and if on Windows, shows the
console window of the ffmpeg-mux subprocess so the current output can be
seen.
2020-10-14 18:42:22 -07:00
jp9000 755e4f8897 libobs: Update version to 26.0.2 2020-10-06 07:57:55 -07:00
jp9000 50cbafd711 libobs: Update version to 26.0.1 2020-10-05 09:13:17 -07:00
jp9000 e24aaa0b58 libobs: Update version to 26.0.0 2020-09-28 04:41:22 -07:00
jp9000 e1447c22db libobs: Check if output active when setting encoders
This fixes an issue where someone might mistakenly try to change an
audio/video encoder before the output is complete.
2020-09-23 14:52:15 -07:00
jp9000 af09057395 libobs: Deprecate service multitrack check
This isn't particularly needed, as a service with multiple tracks won't
be using multiple tracks to begin with anyway.  This might change later,
but for now just mark it deprecated.
2020-09-07 13:38:38 -07:00
jpark37 b6afaceeae Update VIDEO_CS_DEFAULT to mean 709 instead of 601
Consistent with modified default UI setting.
2020-09-06 20:51:28 -07:00
Richard Stanway d7e8f115e8 libobs/media-io: Fix suspicious memset behavior 2020-09-04 21:46:18 +02:00
Richard Stanway c8f7a4563d libobs: Check data validity for media sources 2020-08-29 02:42:03 +02:00
Manuel Kroeber 618781e563 libobs: Log Windows 10 Hardware GPU Scheduler
This adds logging for the "Hardware-accelerated GPU Scheduler" (HAGS)
introduced with Windows 10 2004 which is known to cause issues with OBS
and game performance.
2020-08-26 22:57:52 +02:00
Jim 33ecd10358
Merge pull request #3319 from kkartaltepe/x11-underlinking
libobs: Fix underlinking X11
2020-08-23 11:22:59 -07:00
Jim e36b9c309d
Merge pull request #3216 from Xaymar/pr-fix-obs_source_enum_full_tree
libobs: Call enum_all_sources in check for enum_all_sources
2020-08-22 15:09:42 -07:00
Kurt Kartaltepe c3ab6b91f6 libobs: Fix underlinking X11
Add explicit linkage to X11 fixing #3305
2020-08-21 16:25:42 -07:00
Jim 5803504c36
Merge pull request #3261 from e00E/undefined-behavior-utf8
libobs: Fix undefined behavior
2020-08-17 19:23:21 -07:00
Jim 53b65bb5fd
Merge pull request #3245 from e00E/fix-defer-update
libobs: Fix deferred update sometimes using stale data
2020-08-17 08:03:21 -07:00
jp9000 d45017370b libobs: Add functions to get locale text from modules
Useful for sharing translated text from modules with the frontend.  This
is technically already done via properties, but it would be nice to just
be able to explicitly look up locale text directly rather than have to
go through properties.
2020-08-10 12:24:01 -07:00
jp9000 de2e89d972 libobs: Add function to get module pointer
Useful for getting getting locale text associated with a specific module
2020-08-10 12:24:01 -07:00
jp9000 f5d6a695be libobs: Add OBSRef::Get()
Allows explicitly getting the pointer associated with the object.
2020-08-10 12:24:01 -07:00
Valentin b7f5cde4e3 libobs: Fix undefined behavior
It is undefined behavior to apply an offset to a null pointer. I would
have liked to reference cppreference but best I found was the PR that
added this check to clang's undefined behavior sanitizer:
https://reviews.llvm.org/D67122 .
2020-08-08 10:41:24 +02:00
Jim bfdf5dc947
Merge pull request #2356 from jpark37/sycc-color-space
Color space refinements
2020-08-05 08:58:21 -07:00
Valentin 4508cb03b5 libobs: Fix deferred update sometimes using stale data
Currently we use a bool flag to signal the video thread that it should
call obs_source_deferred_update. This does not work correctly when the
update callback is slow and the update is triggered faster than the
callback can complete.

For example:
* the settings are set to state A
* defer_update is set
* obs_source_deferred_update is called and enters into the callback
* the callback starts making use of the settings in state A
* the settings are set to state B
* defer_update stays set
* the callback finishes
* defer_update is set to false

Now defer_update is false but the callback has only observed settings in
state A but not B.

This commit fixes this bug by keeping an update counter. If the counter
has changed while we were in the callback we know that we need to update
again.

The counter is atomic. The current version uses a plain bool which is a
data race as the value is written and read in parallel.
2020-08-04 09:28:55 +02:00
jp9000 d117908440 libobs: Add func to set async video frame immediately
Allows the ability to directly override the current async frame
immediately.
2020-07-29 13:59:49 -07:00
Jim 80bb9b4675
Merge pull request #3206 from notr1ch/frame-fix-squashed
Fix preloaded video behavior
2020-07-29 13:57:52 -07:00
Uro 5fd51eab31 libobs: Add util/sse2neon.h to CMakeLists
Add util/sse2neon.h to libobs_util_HEADERS in CMakelists.txt. The
previous patch #3180 for arm/rpi support was missing this in
libobs/CMakeLists.txt, and as a result plugins such as obs-websocket,
obs-ndi fail to compile on arm/rpi as the header is not copied with the
install.
2020-07-27 11:47:29 -07:00
Michael Fabian 'Xaymar' Dirks 127dce6bf6 libobs: Call enum_all_sources in check for enum_all_sources
Fixes a crash caused by checking for enum_all_sources and then calling
enum_active_sources instead of enum_all_sources. enum_active_sources is
not required for sources that specify enum_all_sources.
2020-07-27 01:53:58 +02:00
Richard Stanway 4f7767111a libobs: Update async texture when showing preloaded video
The previous preloaded video behavior updated the texture on preload
rather than when the video was shown, during which time the texture may
have been modified by other processes, resulting in the wrong frame
being displayed.
2020-07-23 23:54:10 +02:00
Richard Stanway 06321f89e1 UI: Remove OBSContext class and shutdown in run_program
The OBSContext never called obs_startup but would always call
obs_shutdown in its destructor, resulting in shutdown calls even if
libobs wasn't initialized (eg due to a startup error). Instead, we now
track if libobs was initialized in OBSApp and call shutdown in the
destructor.
2020-07-23 23:17:52 +02:00
jpark37 06e4b10675 libobs/media-io: Add missing codec_tag set 2020-07-18 23:35:35 -07:00