Commit Graph

2865 Commits

Author SHA1 Message Date
jcm
3f1a868e05 libobs: Use 'important' usage key for macOS disk space calculations 2024-02-10 17:10:25 -06:00
Patrick Heyer
32ec6c17b5 libobs: Fix free disk space calculation on macOS (#10187)
New space availability keys seem to have very specific file system
requirements not documented anywhere. Using the opportunistic free
space key opportunistically (and falling back on the legacy value
otherwise) should always yield a "good-enough" free disk space value.
2024-02-03 17:35:09 -06:00
Lain
89288f1cf5 libobs: Update version to 30.1.0 2024-02-01 09:57:22 -06:00
Kurt Kartaltepe
ccfcbc2699 libobs: Copy both converted textures on stall for OpenGL
As the comment mentions this only occurs during an encoder stall on the
first frame. On D3D both gs_texture_t's are actually a single D3D
texture object and both planes are copied during gs_copy_texture, for
everyone else we need to copy the textures separately as they are
independent OpenGL textures.
2024-01-30 22:15:41 -06:00
derrod
20d8779d30 libobs: Prevent encoder reconfiguration after initialization 2024-01-29 17:35:11 -05:00
Kurt Kartaltepe
3e49e89611 libobs,libobs-opengl,libobs-d3d11: Add opengl gs_enum_adapters
This adds gs_enum_adapters and gs_get_adapter_count to the opengl
backend and promotes these to multiplatform graphics functions.

However we need to make an internal device change, device_enum_adapters
must pass in the current device on opengl to ensure that adapter #0 is
the display adapter. We do this to avoid changes to plugins already
checking against obs_video_info.adapter which is always 0 and expected
to be the device OBS was initialized on.

The actual implementation reports the dri render node (or /Software).
This allows plugins to query non-video features of the adapters like
VA-API/NVENC/etc or other cross device functionality. `/Software` is
chosen to avoid opening random files in the current directory if its
passed along as a file path like the regular dri render nodes.
2024-01-27 17:51:33 -06:00
Kurt Kartaltepe
02c90207fc libobs,libobs-opengl: enable GPU encoding for OpenGL
Enable all of the previously Windows only paths for OpenGL backends that
support encode_texture2

Co-authored-by: Torge Matthies <openglfreak@googlemail.com>
2024-01-26 20:01:58 -05:00
Torge Matthies
f81ed52ec7 libobs: Add encode_texture2 function to struct obs_encoder_info
And use it if non-NULL instead of encode_texture.
2024-01-26 20:01:58 -05:00
Ryan Foster
3fb529c0ee libobs: Use std _Pragma with MSVC
Instead of using the Microsoft-specific __pragma keyword, use the
standard _Pragma directive, which is now supported in C11 and C++11
/std modes.
2024-01-26 15:33:28 -05:00
derrod
aa730bcd4c libobs: Fix audio doubling with multiple main view mixes 2024-01-25 14:57:03 -05:00
Exeldro
c4c2f5b382 libobs: Fix GPU scaling using the main mix 2024-01-25 14:10:00 -05:00
derrod
a4b8e1a6a9 libobs/util,docs: Deprecate circlebuf 2024-01-16 16:45:10 +01:00
derrod
2963959e71 libobs: Replace circlebuf with deque 2024-01-16 16:45:09 +01:00
derrod
1938d65c9f libobs/util: Add deque 2024-01-16 16:44:12 +01:00
Lain
1e09f5a543 Merge pull request #10039 from derrod/roi-libobs
libobs/plugins: Add region of interest (ROI) encoder feature
2024-01-13 18:30:31 -06:00
Eric Lindvall
71d963a755 libobs/util: Implement error reader for ffmpeg posix pipe
Transition from using popen() to using fork()/dup2()/execl() to provide
a way to read stderr from ffmpeg.

Co-Authored by: PatTheMav <PatTheMav@users.noreply.github.com>
2024-01-13 18:20:26 -06:00
Rodney
d96ad4ac98 libobs: Add encoder ROI functions 2024-01-11 13:36:35 +01:00
jpark37
a8866fe3fa libobs-d3d11: Remove new/delete replacements
MSVC noticed inline is not allowed, and new/delete replacments also
don't belong in a header file. We're also just leaning on
__STDCPP_DEFAULT_NEW_ALIGNMENT__ being 16 for MSVC x64 now.
2024-01-11 04:02:31 -06:00
Lain
ae469d23e1 libobs/util: Fix function declaration
C functions that have no parameters should use (void) to signify that
they have no parameters, otherwise legacy C handling for parameters will
apply.
2024-01-07 15:59:09 -06:00
Lain
2fb7063e1a libobs: Defer media controls to video thread
To prevent sources from having to take too much extra consideration into
threading, defer the media control functions that directly affect
functionality to the video thread. Getters will still have to take
threading into account, but this should make things much more trivial
for media controls thread-wise.

(Lain note: Context: I noticed that things such as the slide show
require mutexes due to their media controls, and I felt that it was
largely unnecessary and that libobs should mitigate the threading issue
itself and keep it all in the video thread like it should be. Again, the
getters are still going to require *some* consideration into threading
but in terms of threading, for the type of stuff we're doing, querying
state is far more trivial to take into consideration.)
2024-01-07 15:59:09 -06:00
Lain
42bda5fb67 libobs/util: Add da_pop_front()
Doesn't really make sense that it was missing, so just add it.
2024-01-07 15:59:09 -06:00
Lain
9c9a50643a libobs: Do not allow controllable media without flag
The OBS_SOURCE_CONTROLLABLE_MEDIA flag is required for controllable
media callbacks to be usable. These checks are being added so we can
defer most controllable media callbacks to the video thread.
2024-01-07 15:59:09 -06:00
Lain
1151bc9dea libobs: Add a couple missing comments
(Lain note: This is mostly so more (yes more) can be added to this
god-forsaken structure without it getting too messy. In terms of actual
code, I need to be better about writing actual code comments. ...Meaning
that I actually need to start writing code comments.)
2024-01-07 15:59:09 -06:00
derrod
6fea91067f libobs: Pass parent pointer into signal_item_remove
With aaf8d8b38f changing the order
item->parent would be NULL thus resulting in a crash.
2024-01-07 02:28:53 +01:00
derrod
aaf8d8b38f libobs: Send item_remove signal after detaching item 2024-01-06 17:48:37 -06:00
jcm
78b6cf16c3 libobs: Use aligned memory allocator in Cocoa logging 2024-01-05 15:38:06 -05:00
jcm
2b38069709 libobs: Log Mac model identifier 2024-01-05 15:38:06 -05:00
derrod
f6c8fe7b64 libobs: Fix crop to bounding box not being duplicated with item 2024-01-03 22:03:16 +01:00
Robert Wittams
73e9561633 mac-capture: Allow selection of channels on core audio devices 2023-12-19 18:33:53 -05:00
PatTheMav
e065f2a839 libobs: Update CMake target source lists with alphabetic sorting 2023-12-19 17:59:44 -05:00
PatTheMav
9ae47a7937 cmake: Update FFmpeg find package to use explicit version 2023-12-19 17:59:44 -05:00
PatTheMav
8135085a23 cmake: Replace custom Qt discovery function with CMake default
find_qt was necessary during the transitional period between Qt5 and
Qt6. With Qt6 being the only supported Qt version (for open source) for
the time being, code complexity can be reduced for easier maintenance.
2023-12-19 17:59:44 -05:00
gxalpha
92ea7cb145 libobs: Remove obs-ui from public headers
This file got removed in 5177a593af and
as such should no longer be declared as a public header.
2023-12-17 22:13:47 +01:00
derrod
7e456d9dea libobs: Add automatic cropping to bounds for scene items 2023-12-16 18:00:11 -06:00
PatTheMav
c83f76db11 libobs: Fix disk space reporting for attached network drives on macOS
While the NSURLVolumeAvailableCapacityForOpportunisticUsageKey resource
correctly reports available disk space for local volumes (regardless
of actual file system used), it does not report actual values for
attached network drives.

The NSURLVolumeAvailableCapacityKey resource will still report
available disk space as expected, so use this value for non-local
volumes instead.
2023-12-16 17:13:29 -06:00
Lain
e958964bee libobs: Update version to 30.0.2 2023-12-10 14:04:03 -06:00
Exeldro
b05a401728 libobs: Render audio for all views 2023-12-10 03:35:11 -06:00
Norihiro Kamae
0f9376f1cb libobs: Fix audio-only output did not receive raw_audio 2023-12-09 18:52:17 -06:00
Lain
646adafc73 libobs: Update version to 30.0.1 2023-12-09 14:21:57 -06:00
sora-blue
8fc0489e4a libobs: Fix scene_enum_sources skipping some active sources
If an item's show/hide transition was active the underlying source
would not previously not be enumerated, resulting in reference leaks by
the UI or other components waiting for the source to be deactivated to
release it.
2023-12-08 14:10:12 +01:00
derrod
ca865f80cc libobs: Pair video encoder with all audio encoders 2023-12-05 15:36:37 -06:00
derrod
b680700bba libobs: Remove unused wait_for_video flag 2023-12-05 15:36:37 -06:00
derrod
5177a593af libobs: Remove module UI functions 2023-12-02 18:09:20 -06:00
derrod
fc891295b6 libobs: Deprecate obs_view_get_video_info 2023-12-02 18:05:55 -06:00
derrod
5ea9fcc951 libobs: Add obs_view_enum_video_info 2023-12-02 18:05:55 -06:00
derrod
7c36257cc0 libobs: Fix obs_view_remove only resetting the first matching mix 2023-12-02 18:03:11 -06:00
derrod
49e796c6fc libobs: Fix GPU scaling always using the main mix 2023-12-02 17:47:33 -06:00
Stephen Seo
cd784644f5 libobs: Fence off unnecessary code due to FFmpeg v6.1 changes
Fixes for using FFmpeg 6.1 due to deprecations. Uses `#if` macros to
allow builds for using older versions of FFmpeg.

This commit prevents obs from using the "fenced" code if using FFmpeg
6.1, since in FFmpeg commit [1] the "side_data" is added to
`AVCodecParameters`, and therefore the existing/following
`avcodec_parameters_copy(...)` will account for the metadata.

[1]: avcodec/codec_par: add side data to AVCodecParameters
21d7cc6fa9
2023-12-02 17:43:18 -06:00
derrod
f5b7c98d2d libobs: Reuse matching mix's render texture if possible
Avoids re-rendering a view if a previous mix with identical settings
has already rendered it
2023-12-02 17:36:48 -06:00
tt2468
05d52ee3a7 libobs: Fix PTS incrementation when FPS divisor is enabled
When using a PTS divisor, OBS would still increment the PTS by only the
original `fps_den` value, not considering that PTS values should be
multiplied by the divisor.

For example, `60/1` increases like `0,1,2,3`. `60000/1001` increases
like `0,1001,2002,3003`.

Without this fix, `60/1` main OBS framerate with a divisor of `2`
produces `0,1,2,3`, while the correct pattern would be `0,2,4,6`
2023-11-29 16:23:24 +01:00