0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 04:42:18 +02:00
obs-studio/libobs
jp9000 c431ac6aa5 libobs: Refactor source volume transition design
This changes the way source volume handles transitioning between being
active and inactive states.

The previous way that transitioning handled volume was that it set the
presentation volume of the source and all of its sub-sources to 0.0 if
the source was inactive, and 1.0 if active.  Transition sources would
then also set the presentation volume for sub-sources to whatever their
transitioning volume was.  However, the problem with this is that the
design didn't take in to account if the source or its sub-sources were
active anywhere else, so because of that it would break if that ever
happened, and I didn't realize that when I was designing it.

So instead, this completely overhauls the design of handling
transitioning volume.  Each frame, it'll go through all sources and
check whether they're active or inactive and set the base volume
accordingly.  If transitions are currently active, it will actually walk
the active source tree and check whether the source is in a
transitioning state somewhere.

 - If the source is a sub-source of a transition, and it's not active
   outside of the transition, then the transition will control the
   volume of the source.

 - If the source is a sub-source of a transition, but it's also active
   outside of the transition, it'll defer to whichever is louder.

This also adds a new callback to the obs_source_info structure for
transition sources, get_transition_volume, which is called to get the
transitioning volume of a sub-source.
2014-12-28 01:51:43 -08:00
..
callback (API Change) Use const params where applicable 2014-09-26 17:23:07 -07:00
data libobs: Add NV12_Reverse shader 2014-12-21 10:14:18 -08:00
graphics graphics: Add gs_effect_loop helper function 2014-11-19 19:46:27 -08:00
media-io libobs/media-io: Fix recursive lock in video 2014-12-21 10:14:19 -08:00
util libobs: Add process piping functions 2014-11-27 00:07:48 -08:00
CMakeLists.txt libobs: Use FFmpeg for image loading by default 2014-12-04 15:38:58 +01:00
LibObsConfig.cmake.in cmake: Export plugin data destination 2014-09-27 09:41:32 -07:00
LibObsConfigVersion.cmake.in Export libobs cmake target, so external plugins can be built without ugly hacks 2014-05-08 14:43:16 +02:00
obs-audio-controls.c libobs: Fix a few warnings 2014-12-28 01:03:10 -08:00
obs-audio-controls.h libobs: Add peak hold property to volmeter 2014-12-14 18:39:54 +01:00
obs-avc.c libobs: Add function to determine AVC keyframes 2014-12-21 10:14:22 -08:00
obs-avc.h libobs: Add function to determine AVC keyframes 2014-12-21 10:14:22 -08:00
obs-cocoa.c (API Change) Refactor module handling 2014-07-27 17:29:10 -07:00
obs-config.h libobs: Set version to 0.7.0 2014-12-15 01:55:18 -08:00
obs-data.c Sort obs_data_items by name 2014-10-01 15:32:49 +02:00
obs-data.h (API Change) Remove pointers from all typedefs 2014-09-25 21:48:11 -07:00
obs-defs.h Change macro to MODULE_MISSING_EXPORTS for clarity 2014-07-27 17:28:35 -07:00
obs-display.c (API Change) Use const params where applicable 2014-09-26 17:23:07 -07:00
obs-encoder.c libobs: Fix bug when SEI not present 2014-12-21 10:14:23 -08:00
obs-encoder.h libobs: Use extern "C" on export headers if C++ 2014-12-21 10:14:21 -08:00
obs-ffmpeg-compat.h Use propper ffmpeg compatiblity instead of relying on deprecated functions 2014-06-28 20:54:14 +02:00
obs-interaction.h Add interaction support to libobs 2014-09-15 17:19:37 -05:00
obs-internal.h libobs: Refactor source volume transition design 2014-12-28 01:51:43 -08:00
obs-module.c (API Change) Remove pointers from all typedefs 2014-09-25 21:48:11 -07:00
obs-module.h Some documentation improvements in obs-module.h 2014-10-19 15:00:07 +02:00
obs-nix.c Fix calculation of physical memory on linux systems 2014-10-05 13:01:19 -07:00
obs-output.c Fix asset crash interleaving with active encoders 2014-11-03 14:13:14 -08:00
obs-output.h libobs: Use extern "C" on export headers if C++ 2014-12-21 10:14:21 -08:00
obs-properties.c libobs: Add obs_property_list_insert_* functions 2014-12-09 14:21:02 -08:00
obs-properties.h libobs: Add obs_property_list_insert_* functions 2014-12-09 14:21:02 -08:00
obs-scene.c libobs: Prevent infinite source recursion 2014-12-28 01:04:26 -08:00
obs-scene.h Scenes: Implement more item positioning features 2014-06-15 20:33:13 -07:00
obs-service.c (API Change) Pass data to get_properties when possible 2014-10-01 15:39:57 +02:00
obs-service.h libobs: Use extern "C" on export headers if C++ 2014-12-21 10:14:21 -08:00
obs-source.c libobs: Refactor source volume transition design 2014-12-28 01:51:43 -08:00
obs-source.h libobs: Refactor source volume transition design 2014-12-28 01:51:43 -08:00
obs-ui.h Revamp API and start using doxygen 2014-02-12 08:04:50 -07:00
obs-video.c libobs: Refactor source volume transition design 2014-12-28 01:51:43 -08:00
obs-view.c (API Change) Remove pointers from all typedefs 2014-09-25 21:48:11 -07:00
obs-windows.c (API Change) Refactor module handling 2014-07-27 17:29:10 -07:00
obs.c libobs: Save/load source audio sync and flags 2014-12-28 01:04:28 -08:00
obs.h libobs: Refactor source volume transition design 2014-12-28 01:51:43 -08:00
obs.hpp Fix OBSRef move assignment not releasing the previous reference 2014-10-29 16:17:07 +01:00
obsconfig.h.in Export plugin destination and relative prefix to obsconfig.h 2014-07-26 14:27:39 +02:00