Commit graph

203 commits

Author SHA1 Message Date
cg2121 42ecdef938 obs-frontend-api: Add screenshot event
This adds a frontend event for when a screenshot is taken.
2022-10-23 11:06:30 +11:00
PatTheMav 89eeeb9c65 docs: Fix sphinx import error on Python 3.10+ 2022-10-20 21:26:52 +11:00
cg2121 3c7b1c8297 obs-frontend-api: Add theme functions
This adds a frontend function to check if a theme is dark and also
adds an event for when the theme is changed.
2022-10-15 16:21:34 -07:00
PatTheMav 9b317edb22 docs: Add obs_sceneitem_group_enum_items API call to scripting docs 2022-10-11 15:19:41 +02:00
CodeYan01 81233c6dd4 docs: Add links to python functions 2022-10-01 16:09:29 -07:00
Matt Gajownik a4564bee27 docs/sphinx: Update references to Python 3.x 2022-08-11 22:06:16 +10:00
tytan652 5490e4f44c libobs,docs: Improve failed module loading logging
- Avoid putting libs (like CEF) in the plugins load failure message.
- Consider obsolete macOS obs-browser plugin fail as a hardcoded skip.
2022-07-30 16:55:03 -07:00
gxalpha 467f73d4c9 obs-frontend-api: Add function for manual file splitting 2022-07-30 18:50:13 +10:00
Matt Gajownik 54a9ae2ea1 docs/sphinx: Override RTD style
This fixes an issue where clickable references did not make it clear
that they were clickable.
2022-07-30 11:09:01 +10:00
Matt Gajownik a1415f4bad docs/sphinx: RTD-friendly documentation changes 2022-07-30 11:09:01 +10:00
Matt Gajownik ff555dd2b0 CI: Update docs to Sphinx v3, fix warnings
Sphinx 3 adds a number of C and C++ friendly directives, making
documenting our code much easier.
2022-07-30 11:09:01 +10:00
Matt Gajownik 60e94a2899 docs/sphinx: Enable extlinks for shorthand URLs
Authors can use :wiki:`PageName` and :source:`libobs/obs.h` to link to
files/pages rather than providing full links. If custom test is needed,
wrap the path in additional <>.
Example:     :wiki:`Use the Wiki <Install-Instructions>`
2022-07-30 11:09:01 +10:00
Matt Gajownik 9e22b6ad53 CI: Use ReadTheDocs theme for Sphinx docs 2022-07-30 11:09:01 +10:00
jp9000 23c3ad4d02 libobs: Add obs_load_all_modules2 and obs_find_modules2
obs_find_modules2 allows the ability to get the module name in the
callback, and the change to obs_find_modules2 also adds the ability to
find out whether any modules failed to load or not.
2022-07-28 16:36:01 -07:00
jp9000 8a698e863d libobs: Add func to get supported service codecs
Allows a service to return a list of codecs that are currently supported
2022-07-26 09:23:35 -07:00
gxalpha 5898df70fa docs: Fix encoder .get_defaults2 arguments 2022-07-06 17:48:15 -07:00
tytan652 bf985946a4 libobs,UI,docs: Add info as text property sub-type in the property API 2022-06-26 17:31:59 +10:00
Tommy Vercetti 3b64e74660 libobs/util: Add function to get Rosetta translation status 2022-06-19 01:37:15 +02:00
Matt Gajownik 736c14f0f5 docs/sphinx: Minor formatting corrections 2022-06-05 12:14:05 +10:00
Matt Gajownik f4b8a3c0e0 docs/sphinx: Update configuration and version 2022-06-05 12:14:03 +10:00
Matt Gajownik c0fcff074c docs/sphinx: Update GitHub links to OBSProject org 2022-06-05 12:13:58 +10:00
tt2468 40a2cc0143 docs/sphinx: Fix statement typo for bfree()
Memory is not allocated by bfree()
2022-05-30 20:57:39 -07:00
jpark37 11da542a0d libobs: Add max_luminance to obs_source_frame
Used in situations where source luminance is greater than HDR nominal
peak setting to avoid clipping by applying BT.2408 maxRGB EETF.
2022-05-27 14:56:47 -07:00
Ryan Foster 75d0f44551 docs: Update speaker_layout enum values
A documentation update was missed. Bring these values up to date with
the current reality.
2022-05-16 17:15:11 -04:00
Norihiro Kamae c491594a51 libobs/util: Add os_sleepto_ns_fast
The function `os_sleepto_ns` has a spin loop so it will consume CPU
resource. The new function has same interface but consumes less CPU
resource with a drawback of less precision.
2022-05-15 02:31:31 -07:00
jp9000 f482111791 libobs: Add ability to configure audio buffering latency
Allows a frontend the ability to set the maximum audio buffering
latency, and specify whether that audio buffering is either fixed (to
the maximum audio buffering latency), or dynamically increasing from 0.

This will be useful if the user wishes to output audio to devices or
through a virtual audio device at a guaranteed minimal latency.
2022-04-24 08:44:33 -07:00
jpark37 338608bd67 libobs,UI: Support HLG nominal peak level
HLG output uses MovieLabs-recommended procedure.

- If peak luminance is greater than 1000, use maxRGB EETF to 1000.
- Otherwise, don't tonemap.
- Then use normal HLG conversion procedure with gamma 1.2 (1000 nits).
2022-04-14 09:36:44 -07:00
jpark37 59dbc3eb81 libobs: Rename Rec. 2020 to Rec. 2100
Rec. 2020 is really an SDR spec, but I think HDR10 made it okay to slap
PQ on it, call it an HDR spec. Rec. 2100 came along after and formally
allowed the use of PQ/HLG, so we should use 2100 instead.
2022-04-10 00:13:52 -07:00
jpark37 06111d5b10 libobs: Add high-precision sRGB support 2022-04-08 17:19:23 -07:00
jpark37 94fa6d064b libobs: Add video_format_get_parameters_for_format
Video matrix is slightly different based on the number of bits per
channel, so derive from video_format for convenience.
2022-04-07 19:28:51 -07:00
jpark37 8194e9431e libobs: Allow transitions to give placeholder
The fade transition could benefit by providing NULL to differentiate a
real source texture from the transparent placeholder. This would give it
a chance to fade correctly for source transitions.
2022-04-07 01:49:57 -07:00
jpark37 0ed0f2cdb4 libobs: Add I010/P010 support, TRC enum 2022-04-03 00:01:25 -07:00
jpark37 e638cc9f82 libobs: Add support for nonlinear SRGB blending 2022-04-02 16:02:41 -07:00
jpark37 525f964b3d libobs: Add color space management
This provides the framework for automatically compositing SDR and HDR
sources together. Source will need to leverage the new
video_get_color_space to opt into HDR support.
2022-03-26 13:00:34 -07:00
jpark37 692ca7efce libobs: Add Rec. 2020 video_colorspace enum values
One for PQ, and one for HLG. Including transfer function as part of the
color space simplifies logic by avoid invalid combinations.
2022-03-24 20:56:19 -07:00
jpark37 cd22df09c9 libobs, UI: Add SDR white nits option 2022-03-23 22:35:26 -07:00
jpark37 eccde48926 libobs/graphics: Add gs_is_monitor_hdr
Only Windows is implemented for now. Mac/Linux return false for now.
2022-03-23 22:35:26 -07:00
jpark37 abddfead2f libobs/graphics: Add color space support 2022-03-23 22:35:26 -07:00
cg2121 65a360fa41 obs-frontend-api: Add function to get frontend translated string
Developers now can easily get a translated string from the frontend
instead of using their own translations.
2022-03-10 06:27:18 -08:00
cg2121 748cf32a43 UI: Add events for renaming profiles/collections
The events make it more clear when profiles or scene
collections are renamed.
2022-03-08 11:17:59 -08:00
jpark37 07042efdf3 docs/sphinx: Add GS_RG16 2022-01-29 15:12:00 -08:00
jp9000 c1905f4e53 docs/sphinx: Fix documentation for addref/release functions
Incorrectly implied that both addref and release calls were deprecated;
only addref calls are deprecated.
2022-01-25 06:22:13 -08:00
Jim 03d9bda387 libobs: Deprecate obs object addref functions
Deprecates:
obs_source_addref()
obs_output_addref()
obs_encoder_addref()
obs_service_addref()
obs_scene_addref()

These functions should be considered unsafe and not used. Instead, use:
obs_source_get_ref()
obs_output_get_ref()
obs_encoder_get_ref()
obs_service_get_ref()
obs_scene_get_ref()

These functions return a pointer to the incremented object only if the
object is still valid, otherwise they will return null, indicating that
the object is no longer valid or is unsafe to use.

The reason why this is being done is because certain third party plugins
seem to be using addref, and are somehow managing to call addref on
sources that have already been fully released. For the sake of safety,
almost all usage of these functions within OBS have also been replaced
as well.
2022-01-25 05:20:03 -08:00
gxalpha 3fb2e27825 docs: Fix frontend API docs for preview_scene functions 2022-01-04 01:53:42 -08:00
tt2468 47397ce527 UI: Add obs_frontend_open_source_interaction()
Adds a frontend api call to open the interact dialog of a source,
just like the `_properties` and `_filters` functions.
2021-12-28 21:44:35 -08:00
tt2468 466ba5ae29 docs: Fix names of filter/properties functions 2021-12-28 16:49:00 -08:00
Richard Stanway 7d64e9d598 libobs: Use size_t for obs_encoder_get_frame_size 2021-12-26 17:32:00 +01:00
jp9000 8212cedf03 Revert "libobs, docs: Add function to get source version"
This reverts commit 1a7a10048c.
2021-12-25 17:10:45 -08:00
Norihiro Kamae d1b87e1642 libobs: Add API to get encoder frame size
When muxing to some format, duration of the packet is used. We need an
API for encoder to return the frame size.
2021-12-23 10:48:37 -08:00
gxalpha 343ffc98ed docs: Document obs_get_scene_by_name 2021-12-23 06:31:45 -08:00
columbarius 4cda05f270 libobs/graphics: Add Linux-only gs_query_dmabuf_* functions
When sharing DMA-BUFs it is required the announce the underlying
hardware capabilities via supported modifiers.

Add new device_query_dmabuf_capabilities vfunc to gs_exports and connect it
to the egl implementation stubs in the supported render platforms. Add a new
public method gs_query_dmabuf_capabilities() that calls the vfunc above.

Add new device_query_dmabuf_modifiers vfunc to gs_exports and connect it
to the egl implementation in the supported render platforms. Add a new
public method gs_query_dmabuf_modifiers() that calls the vfunc above.
2021-12-22 14:27:53 -03:00
tt2468 167f539416 libobs: Rename obs_audio_monitoring_supported to _available
With the reasonable possibility of monitoring support becoming a
runtime check, the phrase `available` is more fitting.
2021-12-22 02:43:14 -08:00
jw0z96 447b17e75e libobs: Implement additional source blending modes 2021-12-20 09:06:38 -08:00
jw0z96 33a6d2a5fd libobs: Expose blending operation types 2021-12-20 09:06:38 -08:00
Exeldro 5df4ffa881 docs: add missing source output flags 2021-12-10 01:10:59 -08:00
Clayton Groeneveld d45e92c10c libobs: Add raw audio callback function
This complements the already existing raw video callback function.
2021-11-24 01:32:31 -08:00
Kasin Sparks 67d2b50a91 UI: Fix bug with audio balance slider not updating
Fixes #4763.
2021-11-23 22:06:25 -08:00
gxalpha c104e59bd4 libobs: Add obs_scene_prune_sources
Adds a function that goes through the scene and releases all sources
that have been removed.
2021-11-23 22:00:47 -08:00
tt2468 9147ce3287 docs: Add missing frontend-api calls + organize
Add all missing obs_frontend_*() functions, plus organize the
`obs_frontend_event` enum. It wasn't ordered the same as the header
file, so we might as well take the opportunity to make it clearer.
2021-11-23 21:52:30 -08:00
tt2468 b79ff4cb13 docs: Add missing config_t get/set functions 2021-11-23 21:52:30 -08:00
tt2468 0038b50776 docs: Add missing obs_source_t functions + organize
Adds some notable obs_source_t functions which are missing from the
current docs. Moves some of the audio-related functions together.
2021-11-23 21:52:30 -08:00
tt2468 74a1aeb593 docs: Minor function description tweaks (reference-scenes)
- Changes the note under obs_sceneitem_get_id(). Getting the id of a
sceneitem is not dangerous and does not cause errors. Only
obs_sceneitem_set_id() can cause errors.
- Changes wording on `obs_group_or_scene_from_source()`
2021-11-23 21:52:30 -08:00
tt2468 6e9644ec15 libobs: Add obs_audio_monitoring_supported()
Currently, ifdefs are used to determine if monitoring is supported.
This is difficult to maintain and restricts plugins from knowing if
monitoring is supported by OBS. This adds a runtime function to fix
that issue.
2021-11-20 20:00:59 -08:00
gxalpha e922a5586f docs: Document obs_group_or_scene_from_source 2021-11-19 02:30:44 -05:00
tt2468 155b91a94e docs: Fix outdated speaker_layout enum
Commit 67e48ecc2c changed this enum from
`SPEAKERS_QUAD` to `SPEAKERS_4POINT0` but did not update the docs.
2021-11-19 00:16:23 -05:00
Clayton Groeneveld 8d349ea4aa obs-frontend-api: Add scripting shutdown event
This event is for when scripts need to know when OBS is exiting.
Currently scripts are destroyed before the current exit event.
2021-11-15 10:20:55 -08:00
tt2468 a65287d615 docs: Add obs_frontend_get_current_record_output_path() 2021-11-13 16:05:52 -08:00
tt2468 10b3a9a84a docs: Add _CHANGING frontend events
Also improves a few related event descriptions.
2021-11-10 06:36:23 -08:00
gxalpha c36a5ae92b libobs: Add obs_get_transition_by_name 2021-11-07 07:40:03 -08:00
Clayton Groeneveld 4b00c8566f libobs, docs: Add function to get source version 2021-10-28 09:14:23 -07:00
Ben Alman f48259f2b3 docs: Add transition duration changed event 2021-09-20 18:54:11 -07:00
columbarius f50c178951 docs: Clarify only DMA-BUFs with a single modifier are supported
The gs_texture_create_from_dmabuf function is a wrapper for
eglCreateImageKHR, which can set a different modifier for each plane.
The documentation should advice against that, since this should be
rejected by the driver.

While DMA-BUFs started to have one modifier per plane, this decision was
rolled back to having one modifier for the whole buffer / all planes.
While some apis like EGL were designed with a modifier per plane,
drivers are expected to reject any request using different modifiers per
plane.
2021-08-25 19:48:22 -07:00
Exeldro 5b18faeb49 UI: Add functions to open properties and filters 2021-08-12 04:31:40 -07:00
jpark37 7c72fd1d4c libobs: Plumb texcoord hint to reduce GPU cost
In order to do linear-correct filtering cheaply when scale filtering is
disabled, we need to know whether or not texture coordinates will always
sample from texel centers. This can be computed at the scene item level
relatively easily, and passed along to sources when rendering. Scene
items will use obs_source_set_texcoords_centered to set hint status, and
sources will use obs_source_get_texcoords_centered to retrieve it.
2021-07-11 08:26:29 -07:00
SCG82 88cc691afa UI: Add obs-frontend-api functions to create/delete profiles 2021-07-09 19:32:18 +12:00
tt2468 9ca70f4470 UI: Add obs_frontend_get_current_profile_path()
Returns the path of the current profile's location on the filesystem.
2021-07-09 17:39:40 +12:00
Matt Gajownik 74c3781554 libobs, UI: Add support for button properties as links
This adds support for a button property that opens a URL, after showing
a confirmation dialog to the user. Both the Type and URL must be set.
2021-07-09 17:32:09 +12:00
jpark37 ae7718a765 libobs, obs-filters: SRGB backwards compatibility
Add OBS_SOURCE_SRGB to indicate sources that support SRGB rendering. We
can use this flag to know which sources do not know how to handle SRGB,
and disable accordingly inside obs_source_main_render().

We can also use this flag to clean up the filter interface and remove
the SRGB-specific functions. We also need to disable direct rendering if
the filter source wants to render SRGB, but the parent source does not
support it.

Scenes and groups are marked as having SRGB support, and those are
internal sources that we control.
2021-05-03 01:19:56 -07:00
jp9000 60447872c0 libobs: Add obs_source_reset_settings()
Allows the ability to reset (erase) a source's existing settings and
replace them with new settings. This is useful for things such as
reverting to older settings.
2021-04-30 18:37:38 -07:00
jp9000 0fd1238d45 libobs: Add functions to backup/restore filters
Adds functions to backup and restore filters (along with their order) on
a specified source. Useful for undo/redo operations.
2021-04-30 00:11:52 -07:00
jp9000 2a63d60d23 docs: Fix erroneous code example 2021-04-24 23:17:58 -07:00
jp9000 74c2379eba libobs: Add obs_data_get_last_json()
Helper function to return the last generated json string for this
object.
2021-04-23 12:38:50 -07:00
jpark37 9220316700 libobs: Add filter functions for SRGB support
This way, legacy filters can use the original functions without
triggering SRGB support.
2021-04-04 00:58:38 -07:00
Georges Basile Stavracas Neto 11e5e6b633 docs: Document gs_texture_create_from_dmabuf
Add some documentation about this new Linux-only function, and its
characteristics.
2021-03-30 22:29:00 -07:00
Jim 5d87f3c00b
Merge pull request #3426 from Programatic/undo_redo
UI: Implement Undo/Redo System
2021-03-30 03:16:24 -07:00
Ford Smith d0dfae6a3c docs: Update documentation about utility functions for undo/redo 2021-03-29 03:06:26 -04:00
Ford Smith 31e5d2e5e3 libobs: Implement obs_data_get_defaults
Implements obs_data_get_defaults and updates the documentation. This is
supposed to allow someone to access all the defaults of an object.
Should help in cases where the full data is needed, and not just the
currently set.
2021-03-22 15:44:56 -04:00
Exeldro 32e7ba1abe UI: Add visibility transitions
This also modifies libobs.

This adds the ability for scene items to have transitions
when their visibility is toggled.
2021-03-16 22:15:16 -07:00
Anton Bershanskiy 54cbd98d91 libobs: add helper for source filter count
Add function size_t obs_source_get_filter_count(obs_source_t *source)
which returns the number of filters a source has. Update docs for it.
2021-03-16 21:38:06 -07:00
Christopher P. Yarger dcf3e6cd06 docs: Add entries for Frontend API T-bar control 2021-03-10 20:18:36 -08:00
tt2468 1ea8183737 Docs: Add obs_frontend_reset_video() 2021-02-03 08:53:42 -08:00
jpark37 5cf40bf818 docs/sphinx: Update atomic API 2021-02-03 08:51:31 -08:00
Clayton Groeneveld 99d10c2607 libobs: Add function to get module lib
This adds a function find module library.

Co-authored-by: Stéphane Lepin <stephane.lepin@gmail.com>
2021-01-26 03:31:31 -08:00
jpark37 edbad7e93d docs/sphinx: Document SRGB changes 2021-01-21 07:42:56 -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
Clayton Groeneveld 3bc4e8ecba obs-frontend-api: Add frontend api functions for the virtual camera
This adds functions to the frontend api to start/stop the virtual
camera, to check if it is active and adds function to get the output
reference. It also adds api events for when the virtual camera is
started or stopped.
2021-01-13 09:46:04 -08:00
jpark37 e4bfb783ee docs/sphinx: Add obs_properties_add_color_alpha 2021-01-11 11:52:50 -08:00
Andrew Woodward ae9b7eaa9a docs/sphinx: Add missing obs_frontend_open_projector 2021-01-02 04:34:59 -08:00
Ryan Foster 9ab0d8c524 docs: Fix GitHub Actions doc check warnings 2020-10-16 16:27:38 -07:00
hgonomeg d3ec3e99d5
UI: Add replay buffer saved event to the frontend api (#3592)
* obs-frontend-api: add the event of saving replay buffer

Add OBS_FRONTEND_EVENT_REPLAY_BUFFER_SAVED as given by RFC 33

* UI: Emit the replay buffer saved event to the api

Send the OBS_FRONTEND_EVENT_REPLAY_BUFFER_SAVED to api (as in rfc33)

* docs/sphinx: Add replay buffer saved event

Documentation provided for OBS_FRONTEND_EVENT_REPLAY_BUFFER_SAVED (RFC33)
2020-10-10 17:53:13 -07:00