400 Commits

Author SHA1 Message Date
Georges Basile Stavracas Neto
94d2166951 libobs/util: Rename struct field 'id' to 'cookie'
All D-Bus interfaces call the unique identifier that is returned by their
calls "cookie", so rename the 'id' field to 'cookie' to match that.
2021-02-25 12:32:44 -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
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
jpark37
54047ef9ca libobs: Avoid strncpy warning 2021-01-30 00:24:16 -08:00
jpark37
98d1f340da libobs: Fix unused parameter 2021-01-29 21:50:06 -08:00
jpark37
ccf16ddb65 libobs: Fix dstr leak 2021-01-22 22:16:17 -08:00
Richard Stanway
900b5341eb libobs: Add os_is_obs_plugin function
This function determines if something is an OBS plugin before attempting
to load it. On Windows, many plugins ship their dependent DLLs alongside
the plugin DLL, so OBS would load things like libcef.dll on startup only
to immediately free it. For other platforms, this is less of a concern
so this function is a no-op for now.

This improves startup time and reduces risk from dependent DLLs
potentially running code with unwanted side effects in DllMain.
2021-01-18 19:05:41 -08: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
Vadim Zhukov
0d222b6b56 Add OpenBSD support 2020-11-14 11:55:22 -08: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
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
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
venepe
f5d877b393 libobs: Add arm support 2020-07-18 00:53:03 -05:00
jp9000
18b915a47b libobs/util: Use is_padding() for wcsdepad as well
Fix wcsdepad so that it checks for padding in the same way strdepad
does.
2020-07-11 16:15:38 -07:00
sunjingzhao
05826491af libobs/util: Fix potential crash 2020-07-11 16:01:32 -07:00
Jim
0d7b4e1ced
Merge pull request #3006 from mr-c/simde_20200529
libos: Freshen SIMDe code copy
2020-06-21 05:34:38 -07:00
Masato Takahashi
4ded3b39fd libobs: Fix os_get_executable_path_ptr on Linux
Terminate a non-terminated string generated by readlink()
to pass to dirname() that needs terminated string as a parameter.
2020-06-01 09:22:12 +09:00
Michael R. Crusoe
9f72a8ef8c
libos: Freshen SIMDe code copy
Up to date with cafec4b952

Documentation was added to libobs/util/simde/README.libobs
2020-05-29 12:37:14 +02:00
Jim
665180350d
Merge pull request #2657 from hselasky/improvement
libobs: Implement and use better scaling function for 64-bit integers
2020-05-21 18:07:53 -07:00
Jim
63cbcc5dcc
Merge pull request #2900 from jpark37/fix-posix-events
libobs/util: Fix POSIX event bugs
2020-05-09 16:00:27 -07:00
jpark37
7ce30ece82 libobs/util: Fix POSIX event bugs
Handle spurious wakeups, and ensure mutex unlock.
2020-05-09 14:21:35 -07:00
jpark37
7dc2782840 libobs: Fix da_reserve early return logic
Test desired capacity against original capacity instead of size.
2020-05-09 09:15:02 -07:00
Henrik "Henke37" Andersson
6fb19a8904 libobs: Use SetThreadDescription if possible
It's the better way to declare thread names, but you need Windows 10,
version 1607 to use it.
2020-05-03 06:37:28 -07:00
Ka Ho Ng
ab2743dd23 libobs/util: FreeBSD/Dragonfly exec path support
Add support for FreeBSD and Dragonfly in os_get_executable_path_ptr().
This is required to obtain the path of the running executable image
correctly.

Fixes https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=245299
Fixes https://github.com/obsproject/obs-studio/issues/2622
2020-04-08 03:44:40 +08:00
Hans Petter Selasky
0e4ea14ba1 libobs: Implement and use better scaling function for 64-bit integers
As os_gettime_ns() gets large the current scaling methods, mostly by casting
to uint64_t, may lead to numerical overflows. Sweep the code and use
util_mul_div64() where applicable.

Signed-off-by: Hans Petter Selasky <hps@selasky.org>
2020-04-05 20:27:28 +02:00
jpark37
f83c4a8582 libobs: Add move assignment operator for BPtr 2020-03-19 16:18:51 -07:00
jpark37
19c6d06a3b libobs: Fix missing assignment operator return 2020-03-19 14:03:56 -07:00
jpark37
d383efc065 libobs: Handle noexcept warnings
VC++ wants noexcept for move assignment operators, and move contructors.
2020-03-19 11:20:44 -07:00
Richard Stanway
49bd76755b Make cert revocation check fails non-fatal on Win
Instead of erroring out completely when it can't determine if the
certificate is valid, proceed anyway.  This matches how web browsers
treat failed cert revocation checks.  schannel just has somewhat
paranoid defaults.
2020-03-13 07:48:47 -07:00
jp9000
675530204e libobs/util: Add dll version compare func 2020-02-28 23:48:12 -08:00
jp9000
46c8ef615d libobs/util: Use MAX_PATH for absolute path funcs
Makes these functions a bit more consistent with the rest of the
project.
2020-02-28 23:48:12 -08:00
Richard Stanway
269ebd2983 libobs: Handle empty path in os_get_path_extension
os_readdir might return an empty path if the OS filename doesn't fit
into the buffer after os_wcs_to_utf8. If this empty path is then passed
to os_get_path_extension it causes a crash.
2020-02-25 21:31:25 +01:00
Chris Angelico
664acef494 libobs/util: Retry pipe writes to avoid short-write failures
Previously, any short write would be treated elsewhere as a failure. The
easiest solution is to have pipe_write() automatically retry until either
it's written everything, or it couldn't write anything at all.
2020-02-24 12:29:54 +11:00
jpark37
82797eb367 libobs: Make ComPtr header self-sufficient
Don't make someone else define IUnknown.
2020-02-22 21:02:33 -08:00
Richard Stanway
862f16285f libobs: Don't strip whitespace from config values
A plugin that saves whitespace-only data would crash OBS on startup as
the whitespace stripping would send the string length negative. While
that bug is fixed in this commit, there is also no good reason that OBS
is stripping whitespace to begin with. All data going into the configs
should be well formed and some plugins legitimately wish to save
whitespace as a config option (eg for search / replace characters).
2020-02-23 04:02:42 +01:00
VodBox
d1b6a04afc libobs/util: Fix incorrect assertion in darray_insert_array
Previously the assertion required the idx to be smaller than the number
of elements in the darray. This would mean you could not insert anything
at the end of a darray, and would make it impossible to insert an array
into an empty darray.
2020-02-03 10:44:15 +13:00
Jiaxun Yang
6366f6ab59 libobs: Build SIMDE on platforms without SSE2
SIMDE was introduced for aarch64 support, however, the library itself
supports non-SIMD fallback, which allows us provide support to other
platforms without code changes.

There is another world beyond x86. So we can simply enable SIMDE for
processors without SSE2 support.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
2020-01-22 15:41:15 +08:00
jpark37
00f280ff9d libobs: Rename DEPRECATED to OBS_DEPRECATED
Avoid collisions with other libraries that define DEPRECATED.
2020-01-20 21:44:50 -08:00
jp9000
eadb96fbca libobs: Log windows release version
This logs the Windows release version (e.g. 1809, 1903, etc)
2020-01-04 14:25:28 -08:00
jp9000
de3de2a217 libobs: Find windows version
This uses three methods of obtaining the actual windows version,
RtlGetVersion which is the ntdll version of GetVersionEx that bypasses
the manifest check garbage, looking up the file version of a file that
is most likely to be updated per windows version (ntoskrnl), and the
registry.  Of the three values, it chooses the highest windows version
obtained by the three.

Closes obsproject/obs-studio#2294
2020-01-04 14:23:32 -08:00
jpark37
c17397fede libobs: Remove C99 hacks for older VC++ 2019-12-05 18:34:51 -08:00
Ed Maste
97c243fdf9 libobs: add missing FreeBSD #include to fix build
sysctlbyname requires #include <sys/sysctl.h>.  Perhaps this previously
worked due to header pollution that has since been cleaned up in newer
FreeBSD.
2019-11-29 10:51:00 -05:00
Peter Geis
f96545acf3 libobs: Add aarch64 compatibility layer
Add a compatibility layer utilizing simde
(https://github.com/nemequ/simde) to allow compilation on aarch64
without modifying existing functions.
2019-11-25 13:04:01 -05:00
Exeldro
478bf7c6af libobs: Add video info to filename formatting 2019-10-22 02:50:13 -07:00
Colin Edwards
ad85a9fa25 Apply clang-format to objective c code 2019-07-09 13:39:13 -05:00
jp9000
f53df7da64 clang-format: Apply formatting
Code submissions have continually suffered from formatting
inconsistencies that constantly have to be addressed.  Using
clang-format simplifies this by making code formatting more consistent,
and allows automation of the code formatting so that maintainers can
focus more on the code itself instead of code formatting.
2019-06-23 23:49:10 -07:00
mntone
a66ad7eb63 libobs: Use RTLD_FIRST when loading libraries on macOS
Ensures that functions loaded by `os_dlsym()` come only from the
specified library that was loaded with `os_dlopen()` rather than the set
of libraries loaded by the specified library.
2019-04-27 11:56:53 -07:00
jp9000
0e8fe8bbbc libobs/util: Add function to get executable path 2019-04-26 13:24:30 -07:00
Richard Stanway
f52d8bddcc libobs: Allow Win32 pipes to pass STDERR for logging of errors 2019-04-19 05:45:38 -07:00