Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Canvases - Part Deux (Loading/Saving + Frontend API) #11832

Draft
wants to merge 14 commits into
base: master
Choose a base branch
from

Conversation

dsaedtler
Copy link
Contributor

Description

Note

This contains the previous PR (#11823) and hence is a draft.

Adds saving and loading for frontend-owned canvases as well as a frontend API to create/remove/enumerate them.

Motivation and Context

In order to persist additional canvases and their scenes/sources in a way that is reasonably straightforward for API users we want the frontend to own/manage additional canvases that it may interface with.

In the future I'd also like to make transitions and the main canvas part of this abstraction.

How Has This Been Tested?

This was tested with this fork of the vertical canvas plugin that makes use of the new APIs: https://github.com/dsaedtler/obs-vertical-canvas

Types of changes

  • New feature (non-breaking change which adds functionality)

Checklist:

  • My code has been run through clang-format.
  • I have read the contributing document.
  • My code is not on the master branch.
  • The code has been tested.
  • All commit messages are properly formatted and commits squashed where appropriate.
  • I have included updates to all appropriate documentation.

Allos creating additional views that act like a MAIN_VIEW instead of AUX_VIEW.
This adds a new obs_canvas object that acts as a shareable
(reference-counted) owner of views, mixes, and (optionally) scenes.

This is a step towards faciliatating multi-canvas and multi-output
features in OBS Studio.

It solves a number of complications that exist with the manual approach
of using views, such as audio mixing, source active-state tracking, and
scenes not havinga  reliable way of identifying the actual available
canvas size.
Since scenes now can have non-unique names by being part of different
canvases, use UUIDs instead.
Signals when a video reset has completed. This is mainly useful when
canvases or views are used, whose mixes will have been freed or
recreated during the reset.
In addition to the global reset, canvas video can be reset
independently. This signal can be used to detect if the canvas video
was reset, whether by another API user or through a global reset.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant