2212 Commits

Author SHA1 Message Date
jp9000
19068c2960 libobs: Handle removed plugins for versioned sources
When someone adds a source and the plugin is removed for whatever
reason, it would cause a crash with the new source versioning system.
This fixes that by ensuring the unversioned id is also backed up along
with the normal id.
2020-03-09 16:53:44 -07:00
jp9000
8d5ab2be3b libobs: Don't return false, return NULL 2020-03-09 16:42:50 -07:00
jp9000
3e01a85d39 libobs: Fix crash when querying versioned id
The wrong array was used, thus it couldn't find "group" or "scene".
2020-03-09 16:37:46 -07:00
Jim
519b3096aa
Merge pull request #2474 from WizardCM/named-display-monitors
Show friendly monitor names on Display Capture on Windows & Projectors
2020-03-09 06:26:52 -07:00
jp9000
b2302902a3 libobs: Fix source type versioning system
(This also modifies image-source, obs-text, text-freetype2, and UI)

This improves source definition versioning.  To do this, it now stores
two identifier names.  One "unversioned" which is the original name, and
one "versioned" with the version number appended.

This fixes both backward compatibility with older OBS versions, and
fixes the inability to use "add existing" in OBS itself on sources
created from older version definitions.
2020-03-09 06:12:22 -07:00
jp9000
476c332a41 libobs: Compare scene/group ids by strcmp 2020-03-09 05:57:01 -07:00
Matt Gajownik
9931f22ff4 win-capture, libobs: Show names of displays in Display Capture 2020-03-09 11:13:59 +11:00
jpark37
6d5bb8b244 libobs: Only manipulate input source ref counts
Filters can be hidden without being shown, which can unbalance the ref
count and destroys them prematurely. We really only care about input
sources having a chance to clean up from the render thread from the hide
handler, Windows 10 window capture specifically.
2020-03-06 01:14:38 -08:00
jp9000
b9d6675e2c libobs: Add ability to rotate async sources 2020-03-01 03:39:54 -08: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
jp9000
ca4b04754c Revert "libobs: Fix audio keyframe issue"
This reverts commit ff22c20019115adee471328f729588db0115f45f.

This caused a bug in FTL output, which started hitching after this
commit.  Presumably due to opus; it's likely you're not supposed to do
this with all audio encoders.
2020-02-27 06:44:20 -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
Jim
267874ad92
Merge pull request #2427 from Rosuav/retry-pipe-write
libobs/util: Retry pipe writes to avoid spurious failures on short write.
2020-02-24 23:41:48 -08:00
jpark37
3703581472 libobs: Pump graphics loop one final time for cleanup 2020-02-23 19:43:10 -08: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
9cff2ae6bb libobs: Add extra reference when source is displayed
This provides a chance to clean up resources on the graphics thread in
the hide callback, which Windows Graphics Capture requires.
2020-02-22 21:02:33 -08:00
jpark37
82cdc6e8c6 libobs: Pump Win32 messages on the graphics thread
Necessary for upcoming Windows Graphics Capture support.
2020-02-22 21:02:33 -08:00
jpark37
f27f858ab3 libobs: Support device loss registration
Complex external systems using the D3D11 device may need to perform
their own device loss handling, the upcoming Windows Graphics Capture
support for example.
2020-02-22 21:02:33 -08: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
jp9000
4f6b4df17e UI: Hide encoder if marked internal
(This commit also modifies libobs)

Hides encoders that are marked as internal.  Same general functionality
as DEPRECATED but not actually deprecated, just internal-only.
2020-02-18 21:37:41 -08:00
jp9000
de363d3e09 libobs: Add obs_encoder_scaling_enabled()
Returns whether rescaling is enabled for an encoder.  This will be used
with texture-based encoders to determine whether to fall back to
RAM-based encoding instead.
2020-02-18 20:58:58 -08:00
Jim
d13f204488
Merge pull request #2257 from Xaymar/fix-remove_by_name-corruption
libobs: Don't corrupt obs_properties in ..._remove_by_name
2020-02-15 20:03:58 -08:00
jp9000
6970cc32c2 libobs: Remove unused variable 2020-02-12 18:31:18 -08:00
jp9000
ff22c20019 libobs: Fix audio keyframe issue
Audio packets are always considered keyframe packets, so if they weren't
already, mark them as keyframe packets.
2020-02-12 18:27:42 -08:00
jp9000
94d4bfdb1c libobs: Restore order 2020-02-09 18:36:58 -08:00
Ilya Melamed
9f035e430c libobs: fix obs_sceneitem_group_XXX_item API
`obs_sceneitem_group_add_item` and `obs_Sceneitem_group_remove_item`
were leaving the affected scene in an inconsistent state.

To resolve, simplify and make the code more readable, we replace the
manual linked lists mutation with existing `detach_sceneitem` and
`attach_sceneitem` calls.
2020-02-08 13:17:02 +02:00
Jim
e73e76048e
Merge pull request #2382 from jpark37/mac-linker-fix
libobs: Fix Mac linker error
2020-02-07 18:19:37 -08:00
jp9000
99e639015f libobs: Add group functions that can signal refresh
Adds API:
obs_scene_add_group2
obs_scene_insert_group2
obs_sceneitem_group_ungroup2

These functions should be used by plugins if they need to use these
functions and need to send a refresh signal.  If a major API rework ever
happens the old functions should be removed.  The old functions should
eventually be deprecated.

The reason why specifying a 'signal' parameter is useful is because it's
a bit more seamless for the user interface to be able to have custom
handling of these specific cases.  It looks better and doesn't require
completely erasing/recreating the entire list, which is visually
unappealing.
2020-02-07 16:45:04 -08:00
jp9000
93e2aa1d00 libobs: Make group subitem add/remove funcs signal refresh
Fixes a bug where the UI would not know that a group had been updated.
2020-02-07 16:44:48 -08:00
jp9000
6d0ef75663 libobs: Add refresh signal to scenes
This signal is used to specify when a scene needs a full refresh of its
item list.
2020-02-07 16:35:20 -08:00
jpark37
85c9ccb753 libobs: Fix Mac linker error
Non-static inline functions don't work for some reason.
2020-02-06 12:51:20 -08:00
Exeldro
5c30f8343e docs/sphinx: add media controls 2020-02-06 18:44:04 +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
Clayton Groeneveld
f9ccea5235 libobs: Add media control support to backend 2020-01-30 21:40:20 -08:00
jp9000
3aa08c4e0f libobs: Add obs_scene_find_source_recursive
Same as obs_scene_find_source but also searches groups within the scene.
2020-01-27 14:36:53 -08:00
Jim
b88ea35c34
Merge pull request #2341 from FlyGoat/cross-plat
Add support for MIPS architecture
2020-01-27 04:22:13 -08: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
Clayton Groeneveld
4e3a0180ba libobs, obs-x264: Fix compiler warnings 2020-01-21 15:18:09 -06:00
Jim
8c549a3223
Merge pull request #2327 from jpark37/srgb-enum-value
libobs: Add VIDEO_CS_SRGB enum value
2020-01-20 22:52:57 -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
Clayton Groeneveld
6a7260783e audio-monitoring: Fix Pulse Audio crash 2020-01-18 10:46:56 -06:00
jpark37
8134a116be libobs: Add VIDEO_CS_SRGB enum value
Can't implement all at once because of AMF submodule.
2020-01-18 08:21:42 -08:00
jp9000
70582174c3 libobs: Add the ability to make sources obsolete
This allows the ability to do things such as change defaults or
properties of sources without necessarily breaking older user
configurations that had older defaults or properties.
2020-01-15 01:49:18 -08:00
jpark37
4d6cc442b2 libobs: Add basic support for half floats 2020-01-12 20:02:24 -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
pkubaj
03ab727495 CMake: Fix build on ppc64
ppc64le was fixed before, but ppc64 (big-endian) was still failing.
2020-01-04 02:19:38 -08:00
Jim
8af794ceaf
Merge pull request #2276 from WizardCM/monospace-multiline
Add monospace font for multiline text property
2019-12-30 14:22:16 -08:00